WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress

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

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

Спасибо!

1
Гость
4.4 года назад
  • 2
    Kama7872

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

    Способ 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: плагины

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

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

    Слава 2.5 года назад

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

    Kama 2.5 года назад

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

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

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

    Рома 11 мес назад

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

    Андрей 5 мес назад

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

    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 8 мес назад

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

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