Якщо я перейменую плагін (у його головному файлі php), чи все-таки отримуватиму повідомлення про оновлення?


17

Нещодавно я змушений редагувати основні файли плагіна. Я оновив заголовок згаданого плагіна, щоб вказати, що його відредаговано.

Моє запитання: чи плагін все ще отримає сповіщення про оновлення? Якщо так, я, ймовірно, відключуватимуть оновлення цього плагіна, щоб не забути хтось про мої оновлення та перезапис.

В ідеалі я хотів би побачити, чи плагін отримує оновлення, але не дозволяти їм відбуватися лише натисканням на оновлення. (його потрібно було б видалити та перевстановити, або подібне).


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

Відповіді:


17

Як говорить SickHippie і AFAIK, ви не можете мати обох. Я додаю відповідь з інформацією, яку я зібрав у цій стеці.


Вимкнути сповіщення про оновлення для окремих плагінів

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

Просто відкрийте файл плагіна та змініть номер версії на щось на зразок 9.9.9

Відповідь Хамедуллаха (видалення повідомлення про оновлення Акісмета):

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

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

  • змінити ім'я плагіна, номер версії та ім’я каталогу
  • встановіть оригінальний плагін, але залиште його відключеним, щоб отримувати повідомлення про оновлення
  • додати спеціальне повідомлення до опису плагіна (або замінити оригінал)
  • видаліть дії плагіна (Активувати | Редагувати | Видалити) та встановіть прапорець для групових дій

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

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
}

Пов'язані основні квитки


Дивовижна відповідь! Можливо, я зміню ім'я плагіна, номер версії та ім’я каталогу, а потім встановлю оригінальний плагін, але залиште його відключеним, щоб я міг бачити, коли він оновлюється.
— Зах Лісобей

1
@ZachL - Блискуче! Це повинно працювати чудово!
— SickHippie

2
Ви також можете змінити оригінальний заголовок плагіна Descriptionта додати повідомлення, як-от:Description: ONLY FOR REFERENCE, DON'T ACTIVATE!...[rest of the description]
— brasofilo

1
@ZachL - Додано повну другу альтернативу на основі цього коментаря :)
— brasofilo

3

Ви не можете відключити оновлення, але не оновити сповіщення - вони пов'язані між собою.

Щоб вимкнути сповіщення взагалі, змініть ім'я папки, в якій знаходиться плагін.

Мій особистий метод - додати назву плагіна в головному plugin.phpфайлі 3 a , тому в моєму списку плагінів я бачу AAA/Plugin Name. Це ставить його у верхній частині списку для довідки та відображатиметься у списку плагінів та у списку оновлень. Це в основному особистий прапор, тому я знаю, щоб не оновлювати ці конкретні плагіни.


Дякуємо за відповідь. Щоб уточнити, ви хочете сказати, що перейменування плагіна НЕ зупиняє його сповіщення про оновлення?
— Зах Лісобей

Що стосується вашого першого речення ... Я впевнений, що я міг би знайти якийсь спосіб досягти цього ефекту, можливо, за допомогою деяких підступних js просто видалити посилання з повідомлення.
— Зах Лісобей

AFAIK, перейменування головного файла або заголовка додатка у цьому головному файлі не зупиняє сповіщення про оновлення. Я досить впевнений, що репозиторій плагінів працює на основі назви папки (поштовий індекс, завантажений з Repo, повинен мати те саме ім’я плюс номер версії). Для відключення оновлення є список плагінів та список оновлень, тому переконайтеся, що ваш JS працює в обох місцях (також поділіться, що JS може бути корисним).
— SickHippie
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.