2013-07-27 4 views
26

Я нашел отличный плагин для Wordpress под лицензией GPLv2 и внес много изменений в исходный код, теперь плагин делает что-то еще. Я модифицировал автора (с оригинальными авторскими кредитами плагина), url, номер версии (от xxx 1,5 до yyy 1.0).Wordpress - как отключить обновление плагина

Все работает отлично, но когда Wordpress проверяет обновления плагинов, он обрабатывает мой плагин yyy 1.0 как xxx 1.0 и отображает уведомление о доступном обновлении.

Мой измененный плагин yyy 1.0 был установлен путем копирования файлов с моего компьютера, а не из репозитория WP.

Что еще мне нужно изменить?

+1

FWIW, переименовать папку. Это иногда делает чудеса против отслеживания обновлений. – vaxquis

ответ

16

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

В качестве альтернативы вы можете добавить это в файл плагина:

add_filter('http_request_args', 'dm_prevent_update_check', 10, 2); 
function dm_prevent_update_check($r, $url) { 
    if (0 === strpos($url, 'http://api.wordpress.org/plugins/update-check/')) { 
     $my_plugin = plugin_basename(__FILE__); 
     $plugins = unserialize($r['body']['plugins']); 
     unset($plugins->plugins[$my_plugin]); 
     unset($plugins->active[array_search($my_plugin, $plugins->active)]); 
     $r['body']['plugins'] = serialize($plugins); 
    } 
    return $r; 
} 

Credits: http://developersmind.com/2010/06/12/preventing-wordpress-from-checking-for-updates-for-a-plugin/

+1

Trvial, но я подозреваю Пит оригинальный код для этого от Марка: http://markjaquith.wordpress.com/2009/12/14/excluding-your-plugin-or-theme-from-update-checks/ – jb510

21

Поместите этот код в файл functions.php темы. Это работает для меня, и я использую его. Также это для конкретного плагина. Здесь вам нужно изменить URL-адрес основного файла плагина в соответствии с настройками вашего плагина.

function my_filter_plugin_updates($value) { 
    if(isset($value->response['facebook-comments-plugin/facebook-comments.php'])) {   
     unset($value->response['facebook-comments-plugin/facebook-comments.php']); 
    } 
    return $value; 
} 
add_filter('site_transient_update_plugins', 'my_filter_plugin_updates'); 

Здесь:

"facebook-комментарий-плагин" => Facebook Комментарии Имя плагина папки

"facebook-comments.php" => плагин основных file.this может быть другой как index.php

Надеюсь, что это поможет.

Подробнее в my blog.

30

Отключить обновление плагина

Добавьте этот код в корневом файле плагина.

add_filter('site_transient_update_plugins', 'remove_update_notification'); 
function remove_update_notification($value) { 
    unset($value->response[ plugin_basename(__FILE__) ]); 
    return $value; 
} 
+2

Этот метод удаляет уведомление только в том случае, если плагин активирован. Показывает уведомление об обновлении, так как плагин отключен. –

+1

@ aniskhan001 в функции.php добавить код выше и отключить определенный плагин как 'unset ($ value-> response [" akismet/akismet.php "]);' –

+0

это лучшее решение, так как использует перехватчики платформы. – loretoparisi

7

Самый простой и эффективный способ - изменить версию плагина, который вы не хотите получать. Для примера , если я не хочу wptouch получить обновление, я открываю это Defination файл, который, как:

/* 
    Plugin Name: WPtouch Mobile Plugin 
    Plugin URI: http://www.wptouch.com/ 
    Version: 4.0.4 

*/ 

Здесь в изменении версии 4.0.4 к как:

/* 
    Plugin Name: WPtouch Mobile Plugin 
    Plugin URI: http://www.wptouch.com/ 
    Version: 9999 

*/ 
+1

иногда работает, но, к сожалению, это не всегда работает. – Gray

7
add_filter('site_transient_update_plugins', '__return_false'); 

в функции.PHP добавить выше код и отключить все плагины обновлений

+0

Блестящий! Большое спасибо. – adamj

1

Вот обновленная версия сценария Марк Джакит в:

  • WP Обновления переключились на HTTPS
  • десериализируются был заблокирован на мой виртуальный хостинг
  • Это использует json_decode и json_encode вместо
  • Кредит: Block Plugin Update

,

add_filter('http_request_args', 'widget_disable_update', 10, 2); 

function widget_disable_update($r, $url) { 
    if (0 === strpos($url, 'https://api.wordpress.org/plugins/update-check/')) { 
     $my_plugin = plugin_basename(__FILE__); 
     $plugins = json_decode($r['body']['plugins'], true); 
     unset($plugins['plugins'][$my_plugin]); 
     unset($plugins['active'][array_search($my_plugin, $plugins['active'])]); 
     $r['body']['plugins'] = json_encode($plugins); 
    } 
    return $r; 
}