WordPress как на ладони
wordpress jino

plugin_action_links хук-фильтр . WP 2.5.0

Позволяет удалить/добавить ссылки, которые выводятся под названием каждого плагина в таблице плагинов в админ-панели (например: Активировать, Деактивировать, Удалить).

Хук network_admin_plugin_action_links — точно такой же хук, только будет использован на странице настроек плагинов у администратора сети сайтов.

Хук plugin_action_links_(plugin_file) — точно такой же хук, сделан для удобства, тут сразу можно указать для какого плагина он будет использоваться, в plugin_action_links нужно проверять этот параметр внутри хука, чтобы добавить ссылки к нужному плагину. Для сети сайтов этот хук выглядит так: network_admin_plugin_action_links_(plugin_file)

По умолчанию, у администратора сети сайтов включены следующие ссылки: Активировать для сети (Network Activate), Деактивировать для сети (Network Deactivate), Редактировать (Edit) и Удалить (Delete).

Использование

add_filter( 'plugin_action_links', 'filter_function_name_11', 10, 4 );
function filter_function_name_11( $actions, $plugin_file, $plugin_data, $context ) {
	// Фильтр...

	return $actions;
}
$actions(массив)
Массив ссылок. Сюда можно добавить свою ссылку.
$plugin_file(строка)
Путь к файлу плагина. Путь передается не весь, а только часть: от каталога плагинов до самого файла плагина, включительно: plugin-name/plugin-file.php.
$plugin_data(массив)
Массив данных плагина.
$context(строка)
На какой подстранице страницы плагинов нужно используется фильтр. Может быть: 'All', 'Active', 'Inactive', 'Recently Activated', 'Upgrade', 'Must-Use', 'Drop-ins', 'Search'.

Примеры

#1 Добавим ссылку на страницу настроек плагина

Предположим мы хотим добавить ссылку на страницу настроек плагина, в таблицу плагинов на странице плагинов админ-панели. Такие ссылки выводятся под названием плагина:

add_filter( 'plugin_action_links', 'wpcf_plugin_action_links', 10, 2 );
function wpcf_plugin_action_links( $actions, $plugin_file ){
	if( false === strpos( $plugin_file, basename(__FILE__) ) )
		return $actions;

	$settings_link = '<a href="options-general.php?page='. basename(dirname(__FILE__)).'/options.php' .'">Settings</a>'; 
	array_unshift( $actions, $settings_link ); 
	return $actions; 
}

Вот что у нас получится:

settings

#2 Использование фильтра plugin_action_links_{$plugin_file}

Тоже самое можно сделать использовав аналогичный фильтр plugin_action_links_{$plugin_file}. Он используется в том же месте, что и plugin_action_links. Поэтому чаще всего нет разницы какой фильтр использовать.

// Добавим ссылку на страницу настроек в таблицу плагинов
function plugin_settings_link($links) { 
	$settings_link = '<a href="options-general.php?page=your_plugin_slug">Settings</a>'; 
	array_unshift( $links, $settings_link ); 
	return $links; 
}

$plugin_file = plugin_basename(__FILE__); 
add_filter("plugin_action_links_$plugin_file", 'plugin_settings_link' );

#3 Использование фильтра plugin_row_meta

Чтобы добавить данные в метаданные плагина. Ссылки и текст под описанием плагина, нужно использовать фильтр plugin_row_meta. Для примера, добавим ссылку на страницу настроек в метаданные плагина:

add_filter( 'plugin_row_meta', 'plugin_row_meta_1111', 10, 4 );
function plugin_row_meta_1111( $meta, $plugin_file ){
	if( false === strpos( $plugin_file, basename(__FILE__) ) )
		return $meta;

	$meta[] = '<a href="options-general.php?page='. basename(dirname(__FILE__)).'/options.php' .'">Settings</a>';
	return $meta; 
}
setting2

Заметки

Еще фильтры связанные с изменением данных в таблице плагинов: manage_plugins_custom_column, after_plugin_row, after_plugin_row_$plugin_file.

Где используется хук

WP_Plugins_List_Table::single_row() остальные хуки:

Код хука-фильтра plugin_action_links

Фрагмент из: wp-admin/includes/class-wp-plugins-list-table.php VER 4.9.4
...
			/**
			 * Filters the action links displayed for each plugin in the Plugins list table.
			 *
			 * @since 2.5.0
			 * @since 2.6.0 The `$context` parameter was added.
			 * @since 4.9.0 The 'Edit' link was removed from the list of action links.
			 *
			 * @param array  $actions     An array of plugin action links. By default this can include 'activate',
			 *                            'deactivate', and 'delete'. With Multisite active this can also include
			 *                            'network_active' and 'network_only' items.
			 * @param string $plugin_file Path to the plugin file relative to the plugins directory.
			 * @param array  $plugin_data An array of plugin data. See `get_plugin_data()`.
			 * @param string $context     The plugin context. By default this can include 'all', 'active', 'inactive',
			 *                            'recently_activated', 'upgrade', 'mustuse', 'dropins', and 'search'.
			 */
			$actions = apply_filters( 'plugin_action_links', $actions, $plugin_file, $plugin_data, $context );

			/**
			 * Filters the list of action links displayed for a specific plugin in the Plugins list table.
			 *
			 * The dynamic portion of the hook name, `$plugin_file`, refers to the path
			 * to the plugin file, relative to the plugins directory.
			 *
			 * @since 2.7.0
			 * @since 4.9.0 The 'Edit' link was removed from the list of action links.
			 *
			 * @param array  $actions     An array of plugin action links. By default this can include 'activate',
			 *                            'deactivate', and 'delete'. With Multisite active this can also include
			 *                            'network_active' and 'network_only' items.
			 * @param string $plugin_file Path to the plugin file relative to the plugins directory.
			 * @param array  $plugin_data An array of plugin data. See `get_plugin_data()`.
...

    Здравствуйте, !

    Ваш комментарий
    Предпросмотр