If you build a plugin that require template modification, it might be a good idea to bundle an example theme in your plugin. And here’s how to do it.
It’s very simple. WordPress have a function to register a themes directory
register_theme_directory( $path );.
It’s as simple as that. So here’s the full plugin example:
<?php /** * Plugin Name: f(x) Themes in Plugin Example * Plugin URI: https://shellcreeper.com/how-to-bundle-theme-in-a-plugin/ * Description: Simple example to bundle theme(s) in a plugin. * Version: 1.0.0 * Author: David Chandra Purnama * Author URI: https://shellcreeper.com/ **/ /** * Register Themes Directory * @link https://developer.wordpress.org/reference/functions/register_theme_directory/ */ register_theme_directory( trailingslashit( plugin_dir_path( __FILE__ ) ) . 'themes' );
And then you simply need to create “themes” directory in that plugin and add your bundled themes there.
To make it easier, here’s the full plugin:
This example plugins include 3 blank themes, so you’ll see this in Themes page:
If you using Windows Server (Local such as XAMPP included), It will not work because there’s seem to be a bug related to Themes PATH/URI in Windows server. But this will work fine in most host.
I’ll report this bug soon-ish after some test.