Хук post_row_actions
в WordPress позволяет модифицировать ссылки действий, отображаемые для каждой записи в таблице записей на странице администратора. Этот фильтр применяется только к неиерархическим типам записей, например, к обычным записям.
apply_filters( ‘post_row_actions’, string[] $actions, WP_Post $post )
Параметры
- $actions (array): Массив ссылок действий, по умолчанию включает ‘Изменить’, ‘Быстрое редактирование’, ‘Восстановить’, ‘Корзина’, ‘Удалить навсегда’, ‘Предпросмотр’ и ‘Перейти’.
- $post (WP_Post): Объект текущей записи.
Использование
Для изменения действий записи вы можете использовать следующий код:
add_filter( 'post_row_actions', 'custom_post_row_actions', 10, 2 );
function custom_post_row_actions( $actions, $post ) {
// Проверяем тип записи
if ( $post->post_type == "custom_post_type" ) {
// Создаем URL для новой ссылки
$url = admin_url( 'admin.php?page=my_custom_page&post=' . $post->ID );
// Добавляем новую ссылку
$actions['duplicate'] = sprintf( '<a href="%s">Копировать</a>', esc_url( $url ) );
// Удаляем 'Быстрое редактирование' из стандартных действий
unset( $actions['inline hide-if-no-js'] );
}
return $actions;
}
В данном примере, если тип записи — custom_post_type
, добавляется новая ссылка «Копировать» и удаляется действие «Быстрое редактирование».
Пример 1: Добавление ссылки на комментарии
Вы можете добавить ссылку на страницу комментариев для каждой записи:
add_filter( 'post_row_actions', 'add_comments_link_to_post_actions', 10, 2 );
function add_comments_link_to_post_actions( $actions, $post ) {
if ( $post->comment_count > 0 ) {
$url = esc_url( add_query_arg( array( 'p' => $post->ID ), admin_url( 'edit-comments.php' ) ) );
$actions['comments'] = sprintf( '<a href="%s">Комментарии (%d)</a>', $url, $post->comment_count );
}
return $actions;
}
Этот код добавляет ссылку «Комментарии» к действиям записи, если у записи есть одобренные комментарии.
Пример 2: Изменение существующих ссылок
С помощью данного примера можно изменить стандартные ссылки для конкретного типа записи:
add_filter( 'post_row_actions', 'modify_standard_post_actions', 10, 2 );
function modify_standard_post_actions( $actions, $post ) {
if ( $post->post_type == "another_custom_post_type" ) {
// Изменяем ссылку на редактирование
$actions['edit'] = sprintf( '<a href="%s">Изменить запись</a>', esc_url( admin_url( 'post.php?post=' . $post->ID . '&action=edit' ) ) );
}
return $actions;
}
Этот код изменяет стандартную ссылку «Изменить» на более описательную «Изменить запись» для типа записи another_custom_post_type
.
Заключение
Хук post_row_actions
предоставляет гибкость для кастомизации интерфейса администратора в WordPress, позволяя добавлять, изменять или удалять ссылки действий для записей. Это может быть особенно полезно при работе с пользовательскими типами записей, где необходимы специальные действия или ссылки.