Connect with us
Cloak And Track Your Affiliate Links With Our User-Friendly Link Cloaking Tool, Try It Free


Not an Oxymoron · The Late Developer



Presentation Cover

WordPress, the jack-of-all-trades blog platform/CMS, has undoubtedly made its mark on the web. But let’s be real – having to develop anything custom on top of it can be hard-going once you’ve become used to more modern PHP frameworks such as Laravel or Symfony.

Late last year I gave a lightning talk at PHPSW exploring the highs and lows (ok, mostly the lows) of working with WordPress, and then uncovering how you can actually keep your sanity while wrangling with the complexity spirit demon. You can check out the slide deck here.

First, some context – I’m going to sound like I’m hating on WordPress, but I actually have a huge amount of affection for the platform – it’s battle-tested to say the least, it’s how I originally earned my PHP chops, and I still build on it regularly both at my agency day job and outside of it.

Bear in mind also that I’m coming at this very much from an agency angle – i.e. you have clients and you need to build useful things for them within specific constraints, like time and budget, and their existing solutions and infrastructure.

WordPress Woo

Ok, with that out of the way, let’s start with the positives! Here’s what makes WordPress shine:

  1. Popularity: WordPress reigns supreme, powering a significant chunk (43%) of the internet. It’s not just huge, it’s HUGE. With its massive user base, you’re never short on resources, tutorials, or a helping hand from seasoned WordPress developers.

  2. Documentation: WordPress boasts extensive and well-maintained documentation – see its venerable codex and the more recent code reference. Whether you’re a beginner or an expert, you’ll find answers to many a burning question and uncover almost every piece of functionality you might ever need.

    The codebase is also extensively commented, which partly drives the above resources. Depending on your philosophy around comments, that may or may not be a good thing, but it is extremely helpful when you’re grokking functions/methods and wondering what they do.

  3. Plugins galore: Need a plugin for a specific use case? WordPress has you covered. With literally thousands of plugins available in the directory, you’ll find everything from e-commerce solutions to membership systems and beyond.

WordPress Woe

Now, let’s mix animal metaphors and address the elephant in the room — WordPress is an absolute pig to work with from a development perspective.

Over the years it’s earned a reputation of being quick and easy to set-up, customise and hack on. Its “famous five minute install” feeds into this narrative, and this idea has been further compounded by the absolutely enormous amount of copy-pastable WordPress code that exists on Stack Overflow and WordPress’ own support forum to enable you to add or over-ride specific bits of functionality.

The problem however is that a huge proportion of that copy-pasta is garbage, and the “quick and easy” myth starts to fall apart as soon as you need to do anything reasonably complex or well-factored or maintainable or version-controlled or devops related. My personal experience is that after the undoubted initial velocity scaffolding a basic content-based website, WordPress soon becomes much slower and harder to work with than other frameworks.

Why is that?

  1. Clunky DX: Traditional WordPress development is a cumbersome endeavour. Say goodbye to not so modern luxuries like Composer and PSR-4 standards, and be prepared for a kludgy laborious process that will leave you longing for early retirement. PHP has pretty incredible tooling these days – even compared with supposedly sexier languages – but WordPress doesn’t even try to play nice with any of it out of the box.

  2. Quality of Plugins: While having so many plugins at your disposal can be useful, you’ll need to tread carefully. Many are abysmally coded or poorly maintained, creating a breeding ground for security vulnerabilities and compatibility nightmares. Even the top-tier plugins can turn brittle when you need to enable any kind of deeper customisation, but at least they are (usually) fairly well documented.

  3. Outdated Coding Patterns: WordPress and its plugin ecosystem still carry remnants of older PHP versions and old fashioned coding practices.

    Think huge files full of inconsistently named global functions with no or seemingly random typing. Where there are signs of OOP and classes, the files and methods are still huge, and there is only a cursory attempt at encapsulation or separation of concerns.

    WordPress was a PHP trailblazer and created its own Exception/Error implementation before the language even had Exceptions. Kudos to the devs, but confusingly, WordPress still uses this implementation even while the rest of the PHP world has moved on.

    Everything (yes everything, all the code) lives in the public web folder. You’d better hope those htaccess rules are working properly or you’ve already been pwned.

    The sacred commandment of backward compatibility has left WordPress’ codebase aching for a much-needed refactor, but for actually quite sensible reasons, this will probably never happen unless new versions of PHP force specific changes. Having such a HUGE user base means change becomes very difficult indeed to manage and implement.

    That’s not to say there aren’t any modern libraries and patterns in use. For example over on the front end, Gutenberg, the WordPress block editor, is built with React – however I personally find its implementation a little odd. That may be because I’m less well versed in React – I’m more of a Vue guy – or maybe it’s because Gutenberg still needs to co-exist with all the legacy jQuery mess and other tech debt.

    They do things differently round here, same as they’ve always done it. I mean, the core project still uses SVN for version control 😬

  4. Global Scope: Prepare for a tussle with global namespaces and variables – WordPress is chock full of them. These lurking foes can lead to naming conflicts and make your own code a nightmare to test. Don’t get me wrong, I love a convenient global helper as much as the next pragmatic dev, but almost everything is global in WP.

    The loop showcases this pervasive global state antipattern – are you within the loop? How do you know? Has it already been run? Do you need to reset it? What exactly does the_post() do, and why is it named so inscrutably/unhelpfully? There is actually an open ticket to address all of this palaver in WordPress core by replacing it with a generator function, but it’s been 4 years and there’s been close to zero movement on it.

    Debugging and grasping the runtime state can feel like reaching into the void due also to an over-reliance on content-based config, as well as WordPress’ giant action/filter hooks salad. Is WordPress’ hook system convenient and flexible? Absolutely. Is it also confusing as hell and prone to weird race conditions? Definitely.

  5. Frontend Frustrations: Integrating modern frontend build tools and frameworks with WordPress can be a true test of patience. Juggling JavaScript libraries, CSS frameworks, and build processes, and deployment steps will leave you feeling like you’re herding proverbial cats – the default architecture just isn’t suited to it.

  6. Inefficiency FTW: The WordPress REST api was released to great fanfare back in 2016. And yeah it’s full featured and relatively well designed, even though it still has its quirks. The problem? It’s slow as molasses in real world applications.

    Also rather than retiring or deprecating it, WordPress kept its legacy Ajax implementation around. Again to be fair, this does make sense – it is heavily used in the admin, and a full admin rewrite would be extremely painful. It’s also faster than the REST api. But as a developer it jars to have to deal with two entirely separate mechanisms for almost the exact same use case.

    Also know that the Entity Attribute Value pattern (or “meta” in WordPress jargon) is the reigning king here – all your SQL are belong to big inefficient query slowdown. This won’t particularly matter on small data sets without a lot of relations etc, but it really will start to when you get beyond a certain level of complexity – at which point you’re probably going to wish you hadn’t used custom posts at all and just created your own tables.

So why do you even WordPress?

Given these DX challenges, you might wonder why developers still bother. Here are a few reasons:

  1. Client Preference: Clients often gravitate toward WordPress for its user-friendly admin interface and familiarity – it feels less risky to them because they know it. And to deliver projects optimally, you’ll want to cater to their needs and leverage their existing preferences and knowledge rather than teaching them new tricks all the time.

  2. Budget Considerations: WordPress provides an array of ready-made solutions through plugins, themes, and its built-in admin system. While these off-the-shelf options may not be as well suited as bespoke alternatives, they can significantly cut down development time and cost. Think WooCommerce for online shops, or ACF for custom admin UI, or Yoast for SEO.

  3. Legacy Projects: Inherited or existing WordPress projects often demand ongoing maintenance, improvements, or unforeseen feature additions. Scrapping them altogether isn’t always feasible, making it crucial to find ways to breathe new life into these projects and bring them up to modern standards in terms of maintainability. Face it, you’re never going to do that big rebuild in the sky, and 43% of the internet isn’t going to magically transition to Nuxt/Laravel/Rails/Django or whatever your framework poison is.

Embracing Modern WordPress Development


Despite all of the above, custom WordPress development can be made bearable when approached with the right patterns. You could of course just roll your own, but there are a whole host of tools and frameworks aiming to make that process easier. Enter the heroes of modern WordPress development:

  • WPackagist: This packagist repository mirrors publicly available plugins and themes from the WordPress directory.

    This means you can manage third party plugins using Composer, alongside standard PHP libraries, and commit the versions into your git repo instead of leaving things up to chance (or committing the whole dependency!). Say farewell to plugin dependency hell.

    At the agency, we also run a Satis instance for our private composer repos.

  • Frameworks: The ones I’ve tried and tested include Lumberjack, Themosis, TypeRocket and last but not least – Forme, which I wound up developing myself and actively maintain.

    These Open Source frameworks bring MVC architecture, database migrations and ORMs, DI containers, fast custom routing, and view templating to the WordPress realm. They bridge the gap between traditional WordPress development and modern PHP practices from Laravel/Symfony/Cake et al, injecting much-needed sanity into your workflow.

    Some frameworks take it up a notch, adding features such as further wrappers around WordPress core components, code generation tools, job queues, deployment systems, testing setups, and even packaging solutions for your plugins or themes.

    There are also other related libraries and projects within the space including Bedrock, Timber and upstatement/routes.

A Balancing Act

Of course, these frameworks aren’t a magical panacea – there are always trade-offs.

For a start, they tend to be quite heavily engineered and opinionated, adding a bunch of asbtraction and indirection on top of core WordPress which is likely over-kill for very simple projects. Sometimes it’s a lot easier to just stick to the core patterns.

Similarly, at the other end of the complexity scale, you do probably need to question whether WordPress is really the right solution at all. Could you nudge your client to try something else? Do you have the time and budget to build out a more bespoke admin or e-commerce system? Sometimes these requirements can be slightly over-stated anyway – WordPress doesn’t have to be the default.

But as soon as you are in WordPress land and dealing with more than a couple of custom data models, or you need to do some complex plugin or theme customisation, I would say a framework of some sort becomes pretty much indispensible.

An example of something real that I’ve dealt with a couple of times is having to build a custom API for an existing WooCommerce site, with a customer or admin-facing SPA which needs to then consume that API. I’d never want to do that in vanilla WordPress.

Another thing to bear in mind is that integration testing, in particular, can be quite a challenge to set up mainly due to the variable behaviour and quality of third party plugins and their idiosyncrasies. This isn’t really the frameworks’ fault though.

However, armed with your nice new shiny decoupled architecture, some proper testing strategies and tools like PestPHP and Cypress, you can ensure the stability and reliability of your WordPress projects, even when your clients or PM thrown you a curveball feature request.

And finally…

If you’re considering a new greenfield WordPress project, or you have a legacy one that needs a refresh/refactor, I would recommend taking at least one of the frameworks mentioned in this post for a spin. You might be pleasantly surprised.

Since I’ve made this shift myself, I now really enjoy working on custom WordPress development projects. I’ve discovered that it doesn’t have to be synonymous with wading through a morass of spaghetti code. Whisper it, but it can even be fun.

Source link

Keep an eye on what we are doing
Be the first to get latest updates and exclusive content straight to your email inbox.
We promise not to spam you. You can unsubscribe at any time.
Invalid email address


How Exactly to Start a Dropshipping Business, The No-Nonsense Guide | by Ghulam Murtaza Abbasi | ILLUMINATION | Jul, 2024




How Exactly to Start a Dropshipping Business, The No-Nonsense Guide | by Ghulam Murtaza Abbasi | ILLUMINATION | Jul, 2024

So, can you get rich overnight with dropshipping, eh? Well, let me burst that bubble right now. The internet is bursting at the seams with get-rich-quick schemes, especially on YouTube. You’ll find countless videos promising that dropshipping is your golden ticket to easy money. Spoiler alert: it’s not.

Before you dive in, let’s set the record straight: you won’t be buying a yacht next month. Everything worth having takes time, and dropshipping is no exception. Your sky-high expectations? Yeah, those will only serve to demotivate you when reality sets in.

Thinking dropshipping will make you rich quick? That’s as realistic as believing you can become a chef by watching cooking shows. — Golden Ramsay

Here’s the grand, straightforward concept: you’re selling inventory you don’t actually own. You buy it only after a customer places an order. Revolutionary, right?

Now, don’t get too excited. This article isn’t a “top 10 best niches” list. I’m not here to tell you what product to pick. Instead, I’ll guide you on how to set up your storefront and find a reliable supplier.

Shopify is the darling of dropshippers. Why? Because it’s idiot-proof. From managing products to orders and warehouses, it’s all there. Plus, you can connect it to every social media channel under the sun. One tiny change in your product listing? Boom, it’s updated everywhere. Magic.

WordPress with WooCommerce

Now, for those who enjoy a bit of pain, there’s WordPress with the WooCommerce plugin. It’s not rocket science, but it’s definitely not as breezy as Shopify. You’ll need a touch of patience and some technical skills to get things rolling. And don’t forget SEO — Yoast SEO is your new best friend.

I won’t bore you with an exhaustive list, but here are some names: BigCommerce, Wix, SquareSpace, Weebly, CoreCommerce, Ecwid, Shift4Shop. They’re all great, but pick one and stick with it. More options will only make your head spin.

Once you’ve chosen your platform, it’s time to pick your product source. The internet is brimming with options, but here are a few big names:


AliExpress is the OG of dropshipping. With a vast range of products and suppliers, it’s the go-to. Look for suppliers with good performance stats, a couple of years under their belt, and legit product reviews. For automation on Shopify, you’ve got DSers. WooCommerce? Good luck finding a decent plugin.

Other Options

CJDropshipping, ZenDrop, and AutoDS are also in the game. CJDropshipping and ZenDrop are decent but suffer from long shipping times. AutoDS claims the shortest shipping durations, so maybe give that a whirl.

Want faster shipping? Use local suppliers. For US customers, Spocket is gold. They have warehouses in the US, slashing delivery times from 20 days to a mere 3–5 days. CJDropshipping also has US warehouses, but you’ll need to buy inventory in advance or use their existing US stock.

So there you have it, folks. Dropshipping isn’t a walk in the park, but with a little patience and the right strategy, you might just make it work. Just don’t expect to be sipping cocktails on your private island any time soon.

Source link

Keep an eye on what we are doing
Be the first to get latest updates and exclusive content straight to your email inbox.
We promise not to spam you. You can unsubscribe at any time.
Invalid email address
Continue Reading


How to Create a Beautiful and Functional Site for Your WordPress Meetup Group – News




How to Create a Beautiful and Functional Site for Your WordPress Meetup Group – News

Taking advantage of our free site offer for your WordPress community? Here are some new templates you can use.

A few weeks ago at WordCamp Europe we announced free sites for local WordPress meetup groups. This initiative aims to support the WordPress community by providing free world-class hosting to promote your local meetups.

Today we’re bringing you a set of easy-to-use templates, along with some ideas on how to customize your community site. Let’s dive in! 

Building a WordPress community website offers a huge variety of themes, but if you’re looking for a place to start, you can’t go wrong with Twenty Twenty-Four. It’s a community project, comes with a professional, polished look, and offers plenty of built-in patterns that make site building a breeze. It also lends itself beautifully to customization.

Twenty Twenty-Four already has a lot going for it, but we decided to take it a step further and offer a couple of custom, community-focused page layouts to go along with it. Our stylish homepage and events page templates will seamlessly integrate with your site. 

The homepage layout includes a welcome message, stats section, upcoming events, a blog, and a call for speakers. All of these are optional and can be removed or re-arranged as needed. Plus, you can supplement them with other patterns from the catalog, like social icons to promote your local group’s social media presence.

Let’s have a look!

1720713363 302 How to Create a Beautiful and Functional Site for Your

Getting started with templates

First, you’ll want to activate the Twenty Twenty-Four theme on your site. Next, follow these steps to set up your homepage:

  1. Create a static page.
  2. In the “Add a page” modal select the “Events” category on the left, and pick the desired layout, following these steps
  3. Set the page template to “Page No Title.”
  4. Set your custom page as the homepage in the Settings → Reading section following these steps.

Repeat as necessary for the Events page, and any other page that you might want to add to your site, like About, Contact, or Blog.

The above page layouts can also be found in our pattern library in the Events category.

Customization options

Once you’ve applied a template, it’s time to make it your own. Customizing your site to match your group’s vision is easy. Don’t forget to grab official WordPress logos and other visual assets.

Change fonts and colors

Experiment with fonts and colors to make your design unique. Twenty Twenty-Four theme comes with six style variations that include different colors and fonts, and can be further adjusted as needed.

1720713363 144 How to Create a Beautiful and Functional Site for Your

Swap template parts

Use the power of Site Editor to change the header and footer of your site. Twenty Twenty-Four comes with a selection of built-in options for the site headers and footers, so take your pick!

Add links to social media profiles

Use the Social Icons block to display logos that link to your social media profiles anywhere on your site.

Update your group page

Once your local community website is ready, don’t forget to add the link to your group description and the “Find us” section on your official page.

Over to you

We are committed to providing the best tools and resources for the WordPress community. What other patterns or templates would be useful for your meetup site? Share your thoughts and suggestions with us—we’re here to help you succeed!

Join 108.7M other subscribers

Source link

Keep an eye on what we are doing
Be the first to get latest updates and exclusive content straight to your email inbox.
We promise not to spam you. You can unsubscribe at any time.
Invalid email address
Continue Reading


How We Built It: – News




How We Built It: – News

A peek at how our special projects team built the all new website.

When Automattic launched the .blog domain extension back in 2016, our in-house team built a shiny new website to go with it. The vibe of very much matched the era, featuring a simple layout, a generic color palette, and a “just the basics” approach to the content and overall messaging. 

The previous iteration of did its job well, but was due for a redesign.

Eight years later, it was time for a refresh. 

Our special projects team recently revisited, giving it a totally new aesthetic and approach, as well as some cool new features. In this post, we’re going to give you a peek behind the curtain about how this new site came to be. The fresh design beautifully showcases what’s possible with WordPress. 

Take a look around and don’t forget to grab a .blog domain while you’re at it!  

Design inspo 

The first step for our team was to nail down a design motif. For any website project, starting here sets the tone for the entire site. What are the colors, styling, and typographical elements that speak to what you’re trying to get across?

Our design team presented two beautiful options, each with their pros and cons:  

The fluid layout of the lighter version, codenamed Lemon Softness, really stood out, whereas the tile or card layout of the darker version, codenamed Starfield, looked nice, but felt like more of the same on today’s web. 

On the other hand, the dark aesthetic of Starfield spoke a little more to our future-facing sensibilities. 

Ultimately, we combined them. The layout of Lemon Softness is what you’ll see on today (including a few very cool scrolling animations), while the Starfield inspiration shows up in Dark Mode toggle (the moon/sun icon on the top right). Also check out the “glass morphism” effect in the header at the top of the site, which blurs the imagery just a bit so that you can clearly read and navigate the menu.

Blogger inspo 

Of course, it’s not all about the design. Along with the bold new look, our team included a few features that will inspire bloggers of all stripes and encourage getting back into the habit. After all, blogging is actually thriving in our social media world. 

First, we wanted to ensure that “dotbloggers” (folks who use a .blog domain) were highlighted right on the front page. This carousel pulls posts from the “dotblogger” blog category homepage featuring bloggers using a .blog domain.

Just a bit further down on the page, we decided to feature .blog sites; this carousel is actually populated dynamically from a .blog domain database. homepage carousel featuring websites with a .blog domain.

Finally, the team wanted to emphasize how powerful blogging can be. Just as “the death of the novel” has been overblown for at least 100 years, “the death of blogging” is a regular fixture of online discourse. The reality is that more people than ever before are blogging and seeing the value of having a corner of the internet that’s all theirs. To this end, we spent time crafting a manifesto that speaks to this: 

We hold this truth at the center of our mission and vision: content is valuable. When you publish online—whatever you publish—you are declaring your willingness to create and add something to our world.

Owning your domain means that you’re not at the whims of an ever-changing algorithm. It’s a claim of ownership and independence. A .blog domain is more than that—it’s a signal and a badge of authenticity that declares your particular corner of the internet as a space for stories, expressions, thoughts, and ideas. You’re an original.

A .blog domain is more than just the dynamic pillar of your online presence (though it is that too). It’s a stage for all of the utterly unique ways you share your story—in words, photographs, videos, podcasts, artwork, and more.

Resources for days 

Beyond the glitz and glamor, the .blog website also needs to provide practical resources for both registrars and dotbloggers. On the registrar side, our team made it especially convenient to access promotional content and visual marketing assets. When it comes to bloggers looking for a domain, the search page provides real-time results for what’s available and where you can purchase it. 

As a reminder, you can also buy a .blog domain directly from—for just $2.20 for the first year, or for free if you purchase any annual paid plan.  

Take a look for yourself 

No need to take our word on the great job our special projects team did with the new website. Head over, click around, grab your own memorable domain name, and start (or restart) blogging today. 

Join 111.8M other subscribers

Source link

Keep an eye on what we are doing
Be the first to get latest updates and exclusive content straight to your email inbox.
We promise not to spam you. You can unsubscribe at any time.
Invalid email address
Continue Reading