Предотвращение обновления плагина


Я внес некоторые пользовательские изменения в плагин. Когда мы получаем уведомление о том, что в WP есть официальное обновление для этого плагина, разработчику необходимо выполнить обновление вручную, потому что измененные файлы должны быть интегрированы с новой версией.

Мы не хотим, чтобы сотрудник случайно нажал кнопку обновления этого плагина во время прохождения серии обновлений.

Тем не менее, мы все еще хотим видеть уведомление об обновлении, чтобы разработчик мог запланировать обновление. Поэтому увеличение номера версии в заголовке до некоторого действительно высокого значения не является решением, потому что оно блокирует эту видимость.

Как я могу заблокировать обновление WP, чтобы плагин оставался действительным?

Author: Fayaz, 2018-05-25

4 answers

Прежде всего... Это действительно плохая идея - модифицировать существующий плагин.

Но если вам действительно нужно это сделать, то вы можете скрыть ссылку на обновление с помощью этого кода (этот работает для Yoast SEO):

function remove_update_notification_link($value) {
    if ( array_key_exists('wordpress-seo/wp-seo.php', $value->response) ) {
        $value->response[ 'wordpress-seo/wp-seo.php' ]->package = '';
    }
    return $value;
}
add_filter('site_transient_update_plugins', 'remove_update_notification_link');

Будет показано уведомление, но вместо ссылки на обновление будет информация: "Автоматическое обновление недоступно для этого плагина".

Если вы вставите этот код прямо в плагин, то сможете использовать более автоматический способ:

function remove_update_notification_link($value) {
    if ( array_key_exists(plugin_basename(__FILE__), $value->response) ) {
        $value->response[ plugin_basename(__FILE__) ]->package = '';
    }

    return $value;
} 
add_filter('site_transient_update_plugins', 'remove_update_notification_link');
 1
Author: Krzysiek Dróżdż, 2018-05-25 09:20:30

Ответ @Core92 верен, за исключением того, что выдает предупреждение при включении/отключении других плагинов , поэтому лучше:

function filter_plugin_updates( $value ) {
    $toAvoid='path_to_plugin/plugin_name.php';
    if( isset( $value->response[$toAvoid]) )
        unset( $value->response[$toAvoid] );
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
 1
Author: Andrea Somovigo, 2018-05-25 09:16:06

В файле functions.php активной темы добавьте эти строки

function filter_plugin_updates( $value ) {
    unset( $value->response['path_to_plugin/plugin_name.php'] ); // one plugin by line
}

add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

Это полностью скроет требование к обновлению. Вам нужно будет самостоятельно проверить, доступно ли обновление, прокомментировав код.

 1
Author: Core972, 2018-05-25 09:34:48

Существует плагин, который позволяет вам выбирать, для каких плагинов вы не хотите получать уведомления об обновлениях:

Блокировать обновление плагина https://wordpress.org/plugins/block-specific-plugin-updates/

Он некоторое время не обновлялся, но я могу сказать вам, что он отлично работает с текущей версией WP (4.9.6)

 -1
Author: Ray Gulick, 2018-05-29 21:20:45