A WordPress plugin which contains a collection of modules to apply theme-agnostic front-end modifications.
Soil is a commercial plugin available from https://roots.io/plugins/soil/. It's hosted on a public GitHub repository to allow for contributions from the community. It's also published on Packagist to allow easier installation with Composer.
Use Roots Discourse to ask questions, get support, or report issues. Soil must be purchased in order to get support.
Prerequisite | How to check | How to install |
---|---|---|
PHP >= 5.6.x | php -v |
php.net |
You can install this plugin via the command-line or the WordPress admin panel.
If you're using Composer to manage WordPress, add Soil to your project's dependencies.
composer require roots/soil
Then activate the plugin via wp-cli.
wp plugin activate soil
- Download the latest zip of this repo.
- In your WordPress admin panel, navigate to Plugins->Add New
- Click Upload Plugin
- Upload the zip file that you downloaded.
-
Cleaner WordPress markup
add_theme_support('soil', 'clean-up');
-
Disable REST API
add_theme_support('soil', 'disable-rest-api');
-
Disable asset versioning
add_theme_support('soil', 'disable-asset-versioning');
-
Disable trackbacks
add_theme_support('soil', 'disable-trackbacks');
-
Google Analytics
add_theme_support('soil', ['google-analytics' => 'UA-XXXXX-Y']);
-
Move all JS to the footer
add_theme_support('soil', 'js-to-footer');
-
Cleaner walker for navigation menus
add_theme_support('soil', 'nav-walker');
-
Convert search results from
/?s=query
to/search/query/
add_theme_support('soil', 'nice-search');
-
Root relative URLs
add_theme_support('soil', 'relative-urls');
And in a format you can copy & paste into your theme:
/**
* Enable features from Soil when plugin is activated
* @link https://roots.io/plugins/soil/
*/
add_theme_support('soil', [
'clean-up',
'disable-rest-api',
'disable-asset-versioning',
'disable-trackbacks',
'google-analytics' => 'UA-XXXXX-Y',
'js-to-footer',
'nav-walker',
'nice-search',
'relative-urls'
]);
Soil 4 introduced support for options on some modules.
Full annotated list of features and options
/**
* Enable features from Soil when plugin is activated
* @link https://roots.io/plugins/soil/
*/
add_theme_support('soil', [
/**
* Clean up WordPress
*/
'clean-up' => [
/**
* Obscure and suppress WordPress information.
*/
'wp_obscurity',
/**
* Disable WordPress emojis.
*/
'disable_emojis',
/**
* Disable Gutenberg block library CSS.
*/
'disable_gutenberg_block_css',
/**
* Disable extra RSS feeds.
*/
'disable_extra_rss',
/**
* Disable recent comments CSS.
*/
'disable_recent_comments_css',
/**
* Disable gallery CSS.
*/
'disable_gallery_css',
/**
* Clean HTML5 markup.
*/
'clean_html5_markup',
],
/**
* Disable WordPress REST API
*/
'disable-rest-api',
/**
* Remove version query string from all styles and scripts
*/
'disable-asset-versioning',
/**
* Disables trackbacks/pingbacks
*/
'disable-trackbacks',
/**
* Google Analytics
*/
'google-analytics' => [
/**
* This is to go live with GA.
*
* This should probably be false in non-production.
*/
'should_load' => false,
/**
* Google Analytics ID
*
* This is also known as your "property ID" or "measurement ID"
*
* Format: UA-XXXXX-Y
*/
'google_analytics_id' => null,
/**
* Optimize container ID
*
* Format: OPT-A1B2CD (previously: GTM-A1B2CD)
*
* @link https://support.google.com/optimize/answer/6262084
*/
'optimize_id' => null,
/**
* Anonymize user IP addresses.
*
* This might be required depending on region.
*
* @link https://github.com/roots/soil/pull/206
*/
'anonymize_ip',
],
/**
* Moves all scripts to wp_footer action
*/
'js-to-footer',
/**
* Cleaner walker for wp_nav_menu()
*/
'nav-walker',
/**
* Redirects search results from /?s=query to /search/query/, converts %20 to +
*
* @link http://txfx.net/wordpress-plugins/nice-search/
*/
'nice-search',
/**
* Convert absolute URLs to relative URLs
*
* Inspired by {@link http://www.456bereastreet.com/archive/201010/how_to_make_wordpress_urls_root_relative/}
*/
'relative-urls',
]);
Contributions are welcome from everyone. We have contributing guidelines to help you get started.
Keep track of development and community news.
- Participate on the Roots Discourse
- Follow @rootswp on Twitter
- Read and subscribe to the Roots Blog
- Subscribe to the Roots Newsletter
- Listen to the Roots Radio podcast