Anyone know how to eliminate the automatic download of the default WP themes (Twenty Fifteen, etc)?
Would like to remove them from the admin to clean things up.
Anyone know how to eliminate the automatic download of the default WP themes (Twenty Fifteen, etc)?
Would like to remove them from the admin to clean things up.
Use Bedrock
You can remove this plugin or just have WP_DEFAULT_THEME
defined
I’m a little slow. I’m using Bedrock and already see this snippet, but I have all the default WP themes in my project.
Right, that is pointing WP to the themes in the web/wp/wp-content/themes
directory. Removing it will only show themes in web/app/themes
.
Ok, I’ll just deregister. Thank you.
By deregister, do you mean delete the file web/app/mu-plugins/register-theme-directory.php
in your project? Because that’s all you need to do…
yea I just commented it out.
For those like me using Trellis, here is how it seems to me is the best-est way to do it.
Since it’s a configuration you’ll probably want on all your environments, thus edit ./site/config/application.php
Around line 39 you should see:
define('CONTENT_DIR', '/app');
define('WP_CONTENT_DIR', $webroot_dir . CONTENT_DIR);
define('WP_CONTENT_URL', WP_HOME . CONTENT_DIR);
Add a line right underneath:
define('WP_DEFAULT_THEME', CONTENT_DIR . '/themes');
Done.
I had thought WP_DEFAULT_THEME is for defining the default theme - but it seems to be setting the theme directory instead? Is there any documentation for this?
It’s setting the theme directory, not a specific theme. I haven’t noticed that constant mentioned in the docs but a quick check of the code shows this to be the case.
Thanks for this. Looking closer though, it looks like this constant is ultimately used for setting the default theme; check it out:
https://core.trac.wordpress.org/browser/tags/5.0.2/src/wp-includes/default-constants.php#L361
The code from Bedrock that you referenced seems to be setting up a directory to contain themes, but only if the default theme constant isn’t set.
this has to be define('WP_DEFAULT_THEME', 'CONTENT_DIR' . '/themes');
(note the single quotes around CONTENT_DIR) - otherwise it will throw a php-error …
These solutions merely hide those themes, but they do not stop them from downloading as the original poster requested.
There is a PR on github to address this
The solution there is similar to this one, but more targeted:
https://discourse.roots.io/t/setup-bedrock-without-installing-twentyten-twentynineteen-themes/16704
There are a couple of related issues on Github
PS, if you want to also remove them from sites that already have them downloaded, then you would need to use not the post-root-install-package callback, but also the post-update-cmd. So in that case, rather than the code in the Github PR, the Scripts section of your composer.json would look something like this
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\"",
"composer run remove-old-wp-themes"
],
"post-update-cmd": [
"composer run remove-old-wp-themes"
],
"remove-old-wp-themes": [
"rm -rf web/wp/wp-content/themes/twentyten",
"rm -rf web/wp/wp-content/themes/twentyeleven",
"rm -rf web/wp/wp-content/themes/twentytwelve",
"rm -rf web/wp/wp-content/themes/twentythirteen",
"rm -rf web/wp/wp-content/themes/twentyfourteen",
"rm -rf web/wp/wp-content/themes/twentyfifteen",
"rm -rf web/wp/wp-content/themes/twentysixteen",
"rm -rf web/wp/wp-content/themes/twentyseventeen",
"rm -rf web/wp/wp-content/themes/twentynineteen",
"rm -rf web/wp/wp-content/themes/twentytwenty"
],
"test": [
"phpcs"
]
}
Additionally you could adjust your remove-old-wp-themes
script to be like:
rm -rf web/wp/wp-content/themes/twenty*
so it’s all in one rm.