WP Manifestindependent plugin directory
manifest / admin / required-plugins

Required Plugins SourceHut

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from SourceHut with WP-CLI:

wp plugin install https://git.sr.ht/~bp/required-plugins/archive/main.tar.gz
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself.

A library you can use to make any plugins required and auto-activate.

  • Nobody can de-activate the plugin from the WordPress Admin
  • They are auto-activated when required

To use, place this library in your mu-plugins/ directory (if you don't have one, create one in wp-content/), then use the example below:

Installation & Update

With Composer

Add the following to your composer.json

{
    "extra": {
        "installer-paths": {
            "mu-plugins/{$name}/": ["type:wordpress-muplugin"]
        }
    }
}

Then use:

composer require webdevstudios/wds-required-plugins

This will install the mu-plugin, e.g. mu-plugins/wds-required-plugins in wp-content based projects.

You will have to require it in e.g. mu-plugins/wds-required-plugins-list.php:

<?php

require WPMU_PLUGIN_DIR . '/required-plugins/required-plugins.php';

function required_plugins_add( $required ) {
    return array_merge( $required, array(
        'my-plugin/my-plugin.php`,
    ) );
}
add_filter( 'network_required_plugins', 'required_plugins_add' );

Example Usage

<?php

/**
 * Add required plugins to WDS_Required_Plugins.
 *
 * @param  array $required Array of required plugins in `plugin_dir/plugin_file.php` form.
 *
 * @return array           Modified array of required plugins.
 */
function wds_required_plugins_add( $required ) {

    $required = array_merge( $required, array(
        'jetpack/jetpack.php',
        'sample-plugin/sample-plugin.php',
    ) );

    return $required;
}
add_filter( 'required_plugins', 'required_plugins_add' );

Use the following filter instead to network activate plugins:

add_filter( 'network_required_plugins', 'required_plugins_add' );

Change the Text:

To change the label from Required Plugin to something else, use the following filter/code:


/**
 * Modify the required-plugin label.
 *
 * @param  string  $label Label markup.
 *
 * @return string         (modified) label markup.
 */
function change_required_plugins_text( $label ) {

    $label_text = __( 'Required Plugin for ACME', 'acme-prefix' );
    $label = sprintf( '<span style="color: #888">%s</span>', $label_text );

    return $label;
}
add_filter( 'required_plugins_text', 'change_required_plugins_text' );

Hide Required Plugins (off by default)

To hide your required plugins from the plugins list, use the following filter/code:

add_filter( 'required_plugins_remove_from_list', '__return_true' );

This will make any plugin that is required simply not show in the plugins list.