Podoba mi się ta funkcja, ale nie chcę, aby wszystkie moje wtyczki były aktualizowane automatycznie. Jak mogę zezwolić na automatyczną aktualizację niektórych wtyczek, wyłączając te, które chcę wykonać ręcznie?
Zamiast używać kodu z pytania w functions.php, zamień go na:
/**
* 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);
Ten kod można łatwo dostosować, aby dostosować także aktualizacje motywu i rdzenia.
Dodano wtyczki i statystyki aktualizacji motywów w Wordpress 3.8.2 ( 27905 ). Powyższa funkcja używa ślimaka do identyfikacji wtyczek, ale możesz użyć dowolnej informacji o obiekcie (w $ item):
@kaiser Niezły pomysł ze skondensowanym kodem. Minęło trochę czasu, odkąd na to spojrzałem, ale na pierwszy rzut oka wygląda na to, że odwraca to logikę. Testowałeś to? Wygląda na to, że elementy w tablicy są teraz jedynymi, które zostaną automatycznie zaktualizowane, a wszystko inne zostanie wykluczone.
David,
David, miałeś całkowitą rację: Naprawiono i + 1
kaiser
3
Zauważ, że od wersji Wordpress 3.8.2 typ elementu wtyczki przekazanego do tej funkcji zmienił się i jest teraz obiektem.
/**
* @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 fileif(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 updatedif(!in_array(trim($pluginName),$pluginsNotToUpdate)){// error_log("plugin {$pluginName} is not in list allowing");returntrue;// return true to allow update to go ahead}// error_log("plugin {$pluginName} is in list trying to abort");returnfalse;}// 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 */);
Podoba mi się twoja odpowiedź, ale byłoby wspaniale, gdybyś mógł dodać dokumentację, aby wesprzeć ją do dalszego czytania. Dzięki
Pieter Goosen,
Jedyne odniesienie, które mogłem znaleźć w kodeksie do kontrolowania aktualizacji wtyczek, jest tutaj: codex.wordpress.org/… Nie mogłem znaleźć niczego w dziennikach zmian, które wspierałyby zmianę obiektu zamiast przekazywanego łańcucha.
WiseOwl9000 11.04.14
Zredagowałem / zaktualizowałem swoją odpowiedź na konto zmiany. Oto zestaw
Zauważ, że od wersji Wordpress 3.8.2 typ elementu wtyczki przekazanego do tej funkcji zmienił się i jest teraz obiektem.
Obiekt wtyczki $ ma następujące właściwości:
źródło