A personal WordPress MonoRepo for my themes and plugins


I use a self-built WordPress theme for this blog. I also use a variety of self-developed WordPress plugins for various enhancements. I used to publish these plugins, but I get terribly confused by the SVN shenanigans involved, and they weren't used by many people, so I stopped.

Recently, I've been moving all my plugin code into my theme. This is sort-of-but-not-quite a MonoRepo.

I've also tried to move away, as far as possible, from using other people's plugins. Most of the ones I had were single-shot plugins which did one thing and needed the minimum amount of configuration. So I learned from their code and re-implemented it into my theme.

This isn't quite digital-homesteading. I'm not rolling my own crypto, or building my own CMS. I'm just taking back a little control, learning how things work, and enjoying the busy-work of Digital Gardening.

I don't know if this is a good idea. It means I don't get security updates if my knock-off code is vulnerable. I don't get new features. But I also don't have to trust that a 3rd-party developer isn't going to screw up (I can screw up on my own, thank-you-very-much!). I've had a few bad experiences with plugins which suddenly stopped working, or had abusive behaviour.

HowTo

I put new functionality into a file with a descriptive name, for example related-posts.php and I save it in my-theme/includes/.

In my WordPress's theme, I add this to functions.php:

PHP PHP//  Load all the files
$includes_path = get_template_directory() . "/includes/";
foreach ( new DirectoryIterator( $includes_path ) as $fileInfo ) {
    if( $fileInfo->isDot() ) continue;   //  Ignore . and ..
    if( $fileInfo->getExtension() != "php" ) continue; // Only load PHP
    require_once( get_template_directory() . "/includes/" . $fileInfo->getFilename() );
}

That loads all the .php files from /includes/.

I have no idea how performant this is. I have some fairly aggressive caching plugins which should minimise any slowness - and they're not part of my MonoRepo.


Share this post on…

  • Mastodon
  • Facebook
  • LinkedIn
  • BlueSky
  • Threads
  • Reddit
  • HackerNews
  • Lobsters
  • WhatsApp
  • Telegram

What are your reckons?

All comments are moderated and may not be published immediately. Your email address will not be published.

Allowed HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <p> <pre> <br> <img src="" alt="" title="" srcset="">