Вопрос или проблема
Я хотел бы убрать “Обновить сейчас” под названием плагина.
Это моя информация об обновлении:
{
"slug" : "simple-wp-plugin-update",
"version" : "2.5",
"url": "https://my-website.com",
"package": "foo",
"tested" : "5.8",
"requires_php" : "5.3",
"name" : "Пример названия плагина",
"author" : "<a href="https://my-website.com">Имя</a>",
"requires" : "3.0",
"last_updated" : "2023-05-20 16:00:00",
"sections" : {
"description" : "Описание для вкладки Описание в модальном окне",
"installation" : "Описание для вкладки Установка в модальном окне",
"changelog" : "<h4>2.0</h4><ul><li>Исправление ошибок</li></ul>"
}
}
Php, который получает информацию об обновлении:
add_filter('update_plugins_my-domain', 'check_update', 10, 4);
function check_update($update, $plugin_data, $plugin_file, $locales) {
$remote = wp_remote_get(api_url);
if(!is_wp_error( $remote )) {
$remote = json_decode( wp_remote_retrieve_body( $remote ) );
}
return $remote;
}
Это показывает мне:
Доступна новая версия Пример названия плагина. Просмотреть детали версии 2.5 или обновить сейчас.
Если я добавлю это:
add_action( 'in_plugin_update_message-simple-wp-plugin-update/simple-wp-plugin-update.php', 'display_update_message', 10, 2 );
function display_update_message( $plugin_info_array, $plugin_info_object ) {
echo ' Некоторый текст здесь.';
}
Это показывает этот текст после “Обновить сейчас”:
В следующем руководстве они убирают “Обновить сейчас”, но оставляют “Посмотреть текст версии…”
https://rudrastyh.com/wordpress/check-license-key-in-plugin-updates.html
Как я могу этого достичь? Они используют “site_transient_update_plugins”, но я использую add_filter(‘update_plugins…
Я пробовал это: https://stackoverflow.com/a/27074740/1009466, но это полностью убирает все (Посмотреть версию и Обновить сейчас)
add_filter('site_transient_update_plugins', 'remove_update_notification');
function remove_update_notification($value) {
unset($value->response[ plugin_basename(__FILE__) ]);
return $value;
}
Ответ или решение
Для того чтобы удалить текст "Обновить сейчас" из уведомления об обновлении плагина в WordPress, но оставить текст "Посмотреть версию …", вам необходимо использовать фильтры и действия, согласно рекомендации, на которую вы ссылаетесь.
Вот пример кода, который поможет вам достичь желаемого результата:
add_filter('site_transient_update_plugins', 'custom_remove_update_notice');
function custom_remove_update_notice($updates) {
if (isset($updates->response[plugin_basename(__FILE__)])) {
// Получаем информацию о плагине
$plugin_info = $updates->response[plugin_basename(__FILE__)];
// Изменяем на ваше собственное сообщение
$plugin_info->upgrade_notice = 'Ваше кастомное сообщение здесь.';
// Удаляем "Обновить сейчас", но оставляем данные о версии
unset($updates->response[plugin_basename(__FILE__)]);
// Возвращаем информацию о плагине
$updates->response[plugin_basename(__FILE__)] = $plugin_info;
}
return $updates;
}
// Это для того, чтобы корректно отображалось ваше сообщение
add_action('in_plugin_update_message-simple-wp-plugin-update/simple-wp-plugin-update.php', 'custom_update_message', 10, 2 );
function custom_update_message($plugin_info_array, $plugin_info_object) {
echo '<p>Ваше кастомное сообщение здесь.</p>'; // Ваше уникальное сообщение
}
Разъяснения:
-
custom_remove_update_notice: Эта функция обрабатывает массив обновлений и удаляет уведомление "Обновить сейчас", сохраняя при этом остальные сведения, в том числе о новой версии. Мы изменяем содержимое уведомления на ваше собственное через
upgrade_notice
. -
custom_update_message: Эта функция позволяет вам добавить собственный текст под уведомлением о обновлении. Он будет отображаться вместо стандартного "Обновить сейчас".
Таким образом, вы получите возможность кастомизировать уведомления, убирая ненужные вам элементы, оставляя только те, которые вы хотите видеть.
Примечание:
- Убедитесь, что вы имеете подходящий доступ к коду вашего плагина, чтобы внести изменения.
- Тестируйте указанную реализацию на локальной или тестовой среде, чтобы избежать потери функциональности на рабочем сайте.
Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!