Наверх

Запрещаем обновление конкретного плагина в WordPress

Система плагинов в WordPress построена таким образом, что каждый плагин имеет версию и после установки постоянно проверяет на сервере наличие новой версии.

В некоторых случаях может оказаться, что обновлять плагин вам не нужно. Это может произойти, если вы самостоятельно внесли доработки и изменения в код плагина. Тогда обновление перезапишет все ваши правки. Либо же если авторы плагина в чем-то изменили концепцию, и новая версия вас больше не устраивает. В моем случае так случилось с замечательным плагином NextGen Gallery, который после обновления до версии 2 стал неповоротливым и тяжело модифицируемым.

Рассмотрим несколько способов решения этой задачи.

Способ 1. Некорректный

Версия плагина прописывается в начале его главного файла. Открываем список плагинов, выбираем нужный и нажимаем "Изменить".

<?php
/*
Plugin Name: NextGEN Gallery
Plugin URI: http://www.nextgen-gallery.com/
Description: A NextGENeration Photo Gallery for WordPress
Author: Photocrati
Author URI: http://www.photocrati.com/
Version: 1.9.13

Если заменить значение "Version:" на большое число, например 99.99, то проверка обновлений будет сообщать, что установленная  версия новее, и не будет предлагать обновиться.

Способ 2. Корректный

Пропишем фильтр, позволяющий блокировать обновления конкретных плагинов централизованно. Для этого нужно в файл wp-config.php добавить массив:

$DISABLE_UPDATE = array( 'nextgen-gallery', 'nospamnx', 'другие-плагины');

Где значением элемента массива является название директории, в которой расположен плагин,  или его название, если плагин не имеет своей категории (состоит из одного файла).

Затем в файл functions.php текущей темы следует добавить код, который будет обрабатывать данный массив и запрещать для указанных плагинов обновления:

// запрет обновления выборочных плагинов
function filter_plugin_updates( $update ) {    
    global $DISABLE_UPDATE; // см. wp-config.php
    if( !is_array($DISABLE_UPDATE) || count($DISABLE_UPDATE) == 0 ){  return $update;  }
    foreach( $update->response as $name => $val ){
        foreach( $DISABLE_UPDATE as $plugin ){
            if( stripos($name,$plugin) !== false ){
                unset( $update->response[ $name ] );
            }
        }
    }
    return $update;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

Однако имейте ввиду, с обновлением самого WordPress старые версии плагинов могут оказаться несовместимыми и перестать работать, поэтому отключать обновления следует с осторожностью.

Источник

Всего отзывов: 1

  1. Помогло! Спасибос!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *