Если я переименую плагин (в его основном php-файле), получу ли я уведомления об обновлении?

17

Недавно я был вынужден редактировать основные файлы плагина. Я обновил название указанного плагина, чтобы указать, что он был отредактирован.

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

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

Зак Лисобей
источник
Об этой проблеме я недавно опубликовал отчет об ошибке в WordPress Track: Резервное копирование каталога плагинов / тем. Я думаю, что простое автоматическое резервное копирование внутри, но до функции автоматического обновления сделает все намного проще для всех. Я не вижу причин, почему это не было сделано, когда автообновление было выпущено в первый раз, или почему это не было сделано тем временем, и почему это не должно быть сделано.
Андо

Ответы:

17

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


Отключить уведомление об обновлении для отдельных плагинов

Bainternet в комментарии:

Просто откройте файл плагина и измените номер версии на 9.9.9.

Ответ Хамидуллы Кхана (удаление уведомления об обновлении Akismet):

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

Что запускает оповещение об обновлении плагина

Ответ Отто:

API использует довольно сложный механизм для сопоставления плагинов с плагинами, о которых он знает, но вот основные проверенные вещи: URI плагина, имя плагина и слаг плагина (имя каталога, в котором находится плагин)

Измените любой из них, и вы уменьшите вероятность того, что он найдет совпадение, но он все равно может получить его, если два из них совпадут, например.

Информация в файле readme.txt для этого не используется. Используется заголовок самого PHP-файла плагина.


Альтернативный подход 1

  • Измените плагин для проверки обновлений в вашем собственном репозитории.
  • Вам нужно будет следить за оригинальными обновлениями плагина, либо регулярно посещая официальный Repo, либо установив оригинал в какой-либо другой установке WordPress.
  • Когда вы решите, что ваш измененный плагин должен быть обновлен, передайте его в свой репо, и вы получите уведомление
  • Учебное пособие: http://wp.tutsplus.com/tutorials/plugins/a-guide-to-the-wordpress-http-api-automatic-plugin-updates/
  • В книге « Профессиональная разработка плагинов WordPress » Брэда Уильямса, Ожа Ричарда и Джастина Тэдлока есть глава по этому вопросу. введите описание изображения здесь

Альтернативный подход 2 взят из комментариев

  • изменить имя плагина, номер версии и имя каталога
  • установите оригинальный плагин, но оставьте его деактивированным, чтобы получать уведомления об обновлениях
  • добавить собственное сообщение в описание плагина (или заменить оригинал)
  • удалить действия плагина (Activate | Edit | Delete) и флажок для Bulk Actions

введите описание изображения здесь

add_filter( 'all_plugins', 'wpse_56968_on_list_plugins' );
add_filter( 'plugin_action_links_akismet/akismet.php', 'wpse_56968_remove_plugin_actions', 10, 4 );
add_action( 'admin_head-plugins.php', 'wpse_56968_remove_plugin_checkbox' );

function wpse_56968_on_list_plugins( $plugins )
{
    $plugins['akismet/akismet.php']['Description'] = '<strong>*** NOTICE: PLUGIN ONLY TO CHECK UPDATES IN THE ORIGINAL ONE! ***</strong> ';// . $plugins['akismet/akismet.php']['Description'];
    return $plugins;
}

function wpse_56968_remove_plugin_actions( $actions, $plugin_file, $plugin_data, $context ) 
{
    unset( $actions['activate'], $actions['edit'], $actions['delete'] );
    return $actions; 
}

function wpse_56968_remove_plugin_checkbox()
{
    ?>
        <script type="text/javascript">
            jQuery(document).ready( function($) {
                $('tr#akismet th.check-column').html('&nbsp;')
            });     
        </script>
    <?php
}

Связанные основные билеты

brasofilo
источник
Отличный ответ! Возможно, я изменю имя плагина, номер версии и имя каталога, а затем установлю оригинальный плагин, но оставлю его деактивированным, чтобы я мог видеть, когда он обновится.
Зак Лысобей
1
@ZachL - Отлично! Это должно работать просто отлично!
SickHippie
2
Вы также можете изменить оригинальный заголовок плагина Descriptionи добавить некоторые уведомления, такие как:Description: ONLY FOR REFERENCE, DON'T ACTIVATE!...[rest of the description]
brasofilo
1
@ZachL - Добавлена ​​полная вторая альтернатива, основанная на этих комментариях :)
brasofilo
3

Вы не можете отключить обновления, но не уведомления об обновлениях - они связаны друг с другом.

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

Мой личный метод состоит в добавлении 3 к названию плагина в главном plugin.phpфайле, поэтому в моем списке плагинов я вижу AAA/Plugin Name. Это помещает это вверху списка для справки, и будет отображаться в списке плагинов и в списке обновлений. По сути, это личный флаг, поэтому я знаю, что не нужно автоматически обновлять эти конкретные плагины.

SickHippie
источник
Спасибо за ответ. Просто чтобы уточнить, вы говорите, что переименование плагина НЕ останавливает его уведомления об обновлении?
Зак Лысобей
Что касается вашего первого предложения ... Я уверен, что смог бы найти какой-то способ добиться этого эффекта, возможно, с помощью некоторых хитрых js, чтобы просто удалить ссылку из уведомления.
Зак Лысобей
AFAIK, переименование основного файла плагина или заголовка в этом главном файле не останавливает уведомления об обновлениях. Я вполне уверен, что плагин плагин тянет на основе имени папки (zip-файл, загруженный из репо должен иметь то же имя плюс номер версии). Для отключения обновления есть список плагинов и список обновлений, поэтому убедитесь, что ваш JS запускается в обоих местах (также, поделитесь, что JS - может быть полезно).
SickHippie