Wie kann ich verhindern, dass Plugins automatisch aktualisiert werden?

Es gibt einen Opt-In-Filter, mit dem alle Plug-ins auf meiner Site automatische Updates erhalten können:

add_filter( 'auto_update_plugin', '__return_true' );

Ich mag diese function, aber ich möchte nicht, dass alle meine Plugins automatisch aktualisiert werden. Wie kann ich einigen Plugins erlauben, automatisch aktualisiert zu werden, während diejenigen, die ich manuell machen möchte, ausgeschlossen sind?

Solutions Collecting From Web of "Wie kann ich verhindern, dass Plugins automatisch aktualisiert werden?"

Anstatt den Code aus der Frage in functions.php zu verwenden, ersetzen Sie ihn wie folgt:

 /** * Prevent certain plugins from receiving automatic updates, and auto-update the rest. * * To auto-update certain plugins and exclude the rest, simply remove the "!" operator * from the function. * * Also, by using the 'auto_update_theme' or 'auto_update_core' filter instead, certain * themes or WordPress versions can be included or excluded from updates. * * auto_update_$type filter: applied on line 1772 of /wp-admin/includes/class-wp-upgrader.php * * @since 3.8.2 * * @param bool $update Whether to update (not used for plugins) * @param object $item The plugin's info */ function exclude_plugins_from_auto_update( $update, $item ) { return ( ! in_array( $item->slug, array( 'akismet', 'buddypress', ) ) ); } add_filter( 'auto_update_plugin', 'exclude_plugins_from_auto_update', 10, 2 ); 

Dieser Code kann leicht angepasst werden, um auch Theme- und Core-Updates anzupassen.

Plugin und Thema Update-Statistiken wurden in WordPress 3.8.2 ( 27905 ) hinzugefügt. Die obige function verwendet den Slug, um die Plugins zu identifizieren, aber Sie können eine der Informationen des Objekts (in $ item) verwenden:

 [id] => 15 [slug] => akismet [plugin] => akismet/akismet.php [new_version] => 3.0.0 [url] => https://wordpress.org/plugins/akismet/ [package] => https://downloads.wordpress.org/plugin/akismet.3.0.0.zip 

Verwenden Sie für WordPress 3.8.1 und darunter stattdessen diese function:

 function exclude_plugins_from_auto_update( $update, $item ) { return ( ! in_array( $item, array( 'akismet/akismet.php', 'buddypress/bp-loader.php', ) ) ); } add_filter( 'auto_update_plugin', 'exclude_plugins_from_auto_update', 10, 2 ); 

Requisiten gehen zu @ WiseOwl9000, um auf die Änderung mit WP 3.8.2 hinzuweisen

Hinweis ab WordPress 3.8.2 hat sich der Typ des an diese function übergebenen Plugin-Elements geändert und ist nun ein Objekt.

 /** * @package Plugin_Filter * @version 2.0 */ /* Plugin Name: Plugin Filter Plugin URI: http://www.brideonline.com.au/ Description: Removes certain plugins from being updated. Author: Ben Wise Version: 2.0 Author URI: https://github.com/WiseOwl9000 */ /** * @param $update bool Ignore this it just is set to whether the plugin should be updated * @param $plugin object Indicates which plugin will be upgraded. Contains the directory name of the plugin followed by / followed by the filename containing the "Plugin Name:" parameters. */ function filter_plugins_example($update, $plugin) { $pluginsNotToUpdate[] = "phpbb-single-sign-on/connect-phpbb.php"; // add more plugins to exclude by repeating the line above with new plugin folder / plugin file if (is_object($plugin)) { $pluginName = $plugin->plugin; } else // compatible with earlier versions of wordpress { $pluginName = $plugin; } // Allow all plugins except the ones listed above to be updated if (!in_array(trim($pluginName),$pluginsNotToUpdate)) { // error_log("plugin {$pluginName} is not in list allowing"); return true; // return true to allow update to go ahead } // error_log("plugin {$pluginName} is in list trying to abort"); return false; } // Now set that function up to execute when the admin_notices action is called // Important priority should be higher to ensure our plugin gets the final say on whether the plugin can be updated or not. // Priority 1 didn't work add_filter( 'auto_update_plugin', 'filter_plugins_example' ,20 /* priority */,2 /* argument count passed to filter function */); 

Das $ plugin-Objekt hat folgendes:

 stdClass Object ( [id] => 10696 [slug] => phpbb-single-sign-on [plugin] => phpbb-single-sign-on/connect-phpbb.php [new_version] => 0.9 [url] => https://wordpress.org/plugins/phpbb-single-sign-on/ [package] => https://downloads.wordpress.org/plugin/phpbb-single-sign-on.zip )