Row actions для пользовательских типов записей?
Я работаю над плагином, который преобразует сайт в портал обратной связи. Я создал новую страницу объекта 'Feedbacks', которая отображает все отзывы в табличном формате, и использую register_column_headers($array_of_column_headers)
для создания моей таблицы. Я хотел узнать, возможно ли добавить собственные действия для строк в этой таблице, то есть под каждым отзывом в списке такие действия, как 'одобрить', 'удалить', 'занести в черный список' и т.д.
Я изучил код и несколько тикетов и обнаружил, что это делается следующим образом: для записей используется post_row_actions
, для комментариев - comment_row_actions
, для медиафайлов - media_row_actions
и так далее. Существует ли фильтр, который позволит мне использовать что-то вроде my-page-slug_row_actions
?

При использовании пользовательских типов записей применяется фильтр post_row_actions
, при этом проверяется тип записи для его модификации:
add_filter('post_row_actions','my_action_row', 10, 2);
function my_action_row($actions, $post){
// проверяем тип записи
if ($post->post_type =="feedbacks"){
/* здесь можно выполнить нужные действия
можно удалить действия с помощью unset
или добавить новые действия, например:
$actions['in_google'] = '<a href="http://www.google.com/?q='.get_permalink($post->ID).'">проверить индексацию</a>';
*/
}
return $actions;
}
Важное обновление:
Благодаря somatic:
если ваш пользовательский тип записи является "иерархическим", тогда используйте хук:
page_row_actions
.

Привет, я уже использовал 'post_row_actions' для добавления ссылки в строки пользовательских записей. Но я хочу сделать это для моей страницы меню, которая добавлена с помощью хука 'add_object_page' (который похож на 'add_menu_page').
add_object_page("Feedbacks", "Feedbacks", 10, "feedbacks-menu", "FeedbackMenuFunction");
add_submenu_page("feedbacks-menu", "Pending Feedbacks", "Pending", 10, "pending-feedbacks-menu", "PendingFeedbackMenuFunction")
Интересно, могу ли я сделать 'feedbacks-menu_row_actions(...)' (точно так же, как это делается для других страниц, таких как 'Posts', 'Comments' и т. д., используя ярлык страницы с действиями строки).

Является ли Feedback пользовательским типом записи? Если да, прочитайте мой ответ снова.

Нет! 'Feedback' — это комментарий к пользовательской записи вместе с кучей метаданных для этого комментария! Я создаю совершенно новый раздел, в котором все эти 'Feedbacks' перечислены в одном месте, откуда пользователь может их просмотреть, одобрить, снять одобрение и удалить. Это похоже на страницу 'Comments', но с собственной настройкой только для отображения 'Feedbacks'.
И я выяснил, как добавить row_actions к этим строкам. Это просто разметка, <td><div class='row-actions'><span class='edit'><a...>Your Link</a></span></div></td>
. WP добавляет CSS и jQuery, и у вас готово меню действий!

для тех, кто бьется головой об стол, недоумевая, почему этот код ничего не делает с вашим пользовательским типом записи: обратите внимание — если ваш CPT является "иерархическим", то ваш фильтр-хук должен быть "page_row_actions"
, а НЕ "post_row_actions"
[потирает голову]

Я пробовал использовать page_row_actions с слагом моей пользовательской страницы меню, но это не сработало, возможно, я что-то упустил. Однако, изучив код одного очень известного премиум-плагина, который добавляет кастомные действия для строк, я увидел, что они добавляют разметку напрямую в таблицу. Я сделал то же самое, и это работает отлично.
