WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Как правильно отключить обновление плагина в WordPress?

Как правильно запрещать плагинам WordPress обновляться. Нужна отмена обновления плагина и уведомлений о необходимости обновиться. Нужно чтобы плагин никак не тревожил: не выводил уведомления и всякие метки о том что есть новая версия и нужно обновить плагин.

Спасибо!

1
Гость
5.3 года назад
  • 2
    Kama8394

    Есть несколько способов отключить обновление конкретного плагина, перечислю их в порядке, в котором я бы рекомендовал действовать.

    Способ 1: изменение версии плагина

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

    Например, у вас есть плагин wp-super-cache и нужно отключить его обновления. Открываем главный файл плагина wp-cache.php. Для этого переходим в Админку > Плагины > Редактор > Выбор плагина и видим в начале такие строки:

    <?php
    /*
    Plugin Name: WP Super Cache
    Plugin URI: https://wordpress.org/plugins/wp-super-cache/
    Description: Very fast caching plugin for WordPress.
    Version: 1.4.7
    Author: Automattic
    Author URI: https://automattic.com/
    License: GPL2+
    Text Domain: wp-super-cache
    */

    Заменяем версию, строку в строке Version: 1.4.7 на Version: 99991.4.7 и сохраняем изменения.

    Готово! Теперь у вас самая старшая версия плагина, и обновлять её на меньшую WP никогда не будет...

    Способ 2: вставка кода в плагин

    Вставь вот такой код в основной файл плагина и готово!

    add_filter('site_transient_update_plugins', function($value) {
    	if( ! is_object($value) ) return $value;
    
    	// удаляем текущий плагин из списка
    	unset( $value->response[ plugin_basename(__FILE__) ] );
    
    	return $value;
    });

    Спосбо 2.1: код для functions.php

    Если вставлять код в плагин не вариант, то предыдущий код можно использовать за пределами плагина, чтобы отменить проверку его обновлений. Вставлять в плагин удобно, потому что там мы можем динамически получить его базовое им, которое обычно такое: название папки плагина/главный файл плагина.php.

    Пример для плагина Akismet:

    add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );
    function filter_plugin_updates( $value ) {
    	unset( $value->response['akismet/akismet.php'] );
    	return $value;
    }

    Способ 3: плагины

    Для отключения обновлений есть специальные плагины, вот некоторые из них:

    П.С. Вот тут в комментариях отвечал на такой же вопрос.

    Слава 3.5 лет назад

    Скажите пожалуйста, а когда плагин проверяет свои обновления, он дает сигнал на сервер обновлений, что на таком то сайте он, плагин, установлен?

    Kama 3.5 лет назад

    Точно не знаю, но ВП как-то мониторит установленные плагины, скорее всего обновляет метку времени при запросах на проверку обновлений...

    Лариса 2.1 год назад

    Спасибо! Сменила версию, плагин вроде по прежнему работает)mosking

    Рома 1.8 года назад

    Спасибо бро!!!

    Андрей 1.2 года назад

    Спасибо огромное, дружище!
    помог этот код

    add_filter('site_transient_update_plugins', function($value) {
    	if( ! is_object($value) ) return $value;
    
    	// удаляем текущий плагин из списка
    	unset( $value->response[ plugin_basename(__FILE__) ] );
    
    	return $value;
    });
    Комментировать
  • 1

    Скажите, пожалуйста, как отключить обновления для всех плагинов, не пребигая к плагинов.
    Я нашел еще вариант, где можно прописать сразу несколько плагинов, главное не ошибиться с написанием имена папки и основного файла плагина.

     function disable_plugin_updates( $value ) {
    
    	$pluginsToDisable = [
    		'plugin-folder/plugin.php',
    		'plugin-folder2/plugin2.php'
    	];
    
    	if ( isset($value) && is_object($value) ) {
    		foreach ($pluginsToDisable as $plugin) {
    			if ( isset( $value->response[$plugin] ) ) {
    				unset( $value->response[$plugin] );
    			}
    		}
    	}
    	return $value;
    }
    add_filter( 'site_transient_update_plugins', 'disable_plugin_updates' );
    
    Kama 1.5 года назад

    Так а что сказать? Вот же рабочий вроде код. В ответе моем выше тот же принцип в одном из примеров.

    Михаил месяц назад

    Спасибо, помог способ 2.1: код для functions.php.

    Если кому то нужно отключить сразу пару плагинов, просто добавьте идущие друг за другом строчки
    unset( $value->response['1/1.php'] );
    unset( $value->response['2/2.php'] );
    unset( $value->response['3/3.php'] );

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация