Хук plugin_action_links
в WordPress позволяет разработчикам добавлять, изменять или удалять ссылки в таблице управления плагинами. Эти ссылки отображаются под каждым плагином и позволяют быстро перейти к нужным действиям, таким как переход к настройкам, активация или удаление.
Хук plugin_action_links
используется для фильтрации ссылок, отображаемых для каждого плагина в таблице плагинов в админ-панели. С его помощью можно добавлять свои ссылки (например, ссылку на страницу настроек) или изменять существующие. Данный фильтр принимает четыре параметра:
apply_filters( 'plugin_action_links', array $actions, string $plugin_file, array $plugin_data, string $context );
$actions
— массив ссылок действий для плагина, таких как «Активировать», «Деактивировать» и «Удалить».$plugin_file
— путь к файлу плагина относительно каталогаplugins
.$plugin_data
— массив данных плагина, включающий такие данные, как имя, версия и автор.$context
— контекст страницы, например, «все», «активные», «неактивные» и т.д.
Пример: добавление ссылки на страницу настроек
Рассмотрим сценарий, в котором нужно добавить ссылку на страницу настроек для конкретного плагина. Это удобно, если вашему плагину требуется дополнительная конфигурация, и вы хотите предоставить пользователю быстрый доступ к этой странице.
add_filter( 'plugin_action_links', 'add_settings_link', 10, 2 );
/**
* Добавляет ссылку на страницу настроек в таблицу плагинов.
*
* @param array $actions Существующие ссылки действий.
* @param string $plugin_file Путь к файлу плагина.
* @return array Массив ссылок действий с добавленной ссылкой.
*/
function add_settings_link( $actions, $plugin_file ) {
// Проверяем, что ссылка добавляется только для нужного плагина
if ( strpos( $plugin_file, 'my-custom-plugin/my-plugin.php' ) !== false ) {
$settings_link = '<a href="' . esc_url( admin_url( 'options-general.php?page=my-custom-plugin-settings' ) ) . '">Настройки</a>';
array_unshift( $actions, $settings_link );
}
return $actions;
}
Теперь, если активирован плагин my-custom-plugin
, под его названием в таблице плагинов появится ссылка «Настройки», ведущая на страницу настроек плагина.
Пример: удаление ссылки «Удалить» для определённых плагинов
Иногда требуется ограничить действия, которые может выполнить пользователь. Например, вы можете скрыть ссылку «Удалить» для определённых плагинов, чтобы случайно не удалить важный плагин.
add_filter( 'plugin_action_links', 'remove_delete_action_link', 10, 4 );
/**
* Удаляет ссылку "Удалить" из таблицы плагинов для выбранных плагинов.
*
* @param array $actions Существующие ссылки действий.
* @param string $plugin_file Путь к файлу плагина.
* @param array $plugin_data Данные плагина.
* @param string $context Контекст страницы.
* @return array Массив ссылок действий с удалённой ссылкой.
*/
function remove_delete_action_link( $actions, $plugin_file, $plugin_data, $context ) {
// Убираем ссылку "Удалить" для заданных плагинов
$protected_plugins = array(
'akismet/akismet.php',
'my-important-plugin/my-plugin.php'
);
if ( in_array( $plugin_file, $protected_plugins, true ) ) {
unset( $actions['delete'] );
}
return $actions;
}
Теперь для плагинов, указанных в массиве $protected_plugins
, ссылка «Удалить» не будет отображаться, и они не могут быть случайно удалены.
Пример: использование фильтра plugin_action_links_{plugin_file}
Этот вариант позволяет применить фильтр plugin_action_links
непосредственно для одного конкретного плагина. Такой подход сокращает код и делает его более читабельным.
$plugin_slug = plugin_basename( __FILE__ );
add_filter( "plugin_action_links_$plugin_slug", 'add_custom_plugin_link' );
/**
* Добавляет ссылку на настройки для конкретного плагина.
*
* @param array $links Существующие ссылки действий.
* @return array Массив ссылок действий с добавленной ссылкой.
*/
function add_custom_plugin_link( $links ) {
$settings_link = '<a href="options-general.php?page=custom-plugin-settings">Настройки</a>';
array_unshift( $links, $settings_link );
return $links;
}
В этом примере ссылка «Настройки» добавляется только для указанного плагина, не затрагивая другие.
Пример: добавление ссылки в метаданные плагина
Если требуется добавить ссылку под описанием плагина (в метаданные), используйте фильтр plugin_row_meta
.
add_filter( 'plugin_row_meta', 'add_plugin_meta_link', 10, 2 );
/**
* Добавляет ссылку на сайт поддержки в метаданные плагина.
*
* @param array $meta Существующие метаданные.
* @param string $plugin_file Путь к файлу плагина.
* @return array Массив метаданных с добавленной ссылкой.
*/
function add_plugin_meta_link( $meta, $plugin_file ) {
if ( strpos( $plugin_file, 'my-custom-plugin/my-plugin.php' ) !== false ) {
$meta[] = '<a href="https://support.example.com">Поддержка</a>';
}
return $meta;
}
С этим кодом в метаданные плагина добавляется ссылка «Поддержка», ведущая на страницу помощи или форума поддержки.
Пример: добавление ссылки на документацию плагина
Дополнительно можно добавить ссылку на документацию, которая будет полезна для пользователей, нуждающихся в подробных инструкциях по работе с плагином.
add_filter( 'plugin_row_meta', 'add_documentation_link', 10, 2 );
/**
* Добавляет ссылку на документацию в метаданные плагина.
*
* @param array $meta Существующие метаданные.
* @param string $plugin_file Путь к файлу плагина.
* @return array Массив метаданных с добавленной ссылкой.
*/
function add_documentation_link( $meta, $plugin_file ) {
if ( strpos( $plugin_file, 'another-plugin/another-plugin.php' ) !== false ) {
$meta[] = '<a href="https://docs.example.com">Документация</a>';
}
return $meta;
}
Теперь, открывая таблицу плагинов, пользователь увидит ссылку на документацию для конкретного плагина, что может помочь быстрее освоить функционал.
Заключение
Хук plugin_action_links
предоставляет мощные возможности для добавления, удаления и изменения ссылок действий в таблице плагинов WordPress. С его помощью разработчики могут настроить интерфейс управления плагинами, добавляя полезные ссылки, такие как «Настройки», «Документация» или «Поддержка».