Row actions для пользовательских типов записей?

18 апр. 2011 г., 07:36:16
Просмотры: 20.5K
Голосов: 20

Я работаю над плагином, который преобразует сайт в портал обратной связи. Я создал новую страницу объекта 'Feedbacks', которая отображает все отзывы в табличном формате, и использую register_column_headers($array_of_column_headers) для создания моей таблицы. Я хотел узнать, возможно ли добавить собственные действия для строк в этой таблице, то есть под каждым отзывом в списке такие действия, как 'одобрить', 'удалить', 'занести в черный список' и т.д.

Я изучил код и несколько тикетов и обнаружил, что это делается следующим образом: для записей используется post_row_actions, для комментариев - comment_row_actions, для медиафайлов - media_row_actions и так далее. Существует ли фильтр, который позволит мне использовать что-то вроде my-page-slug_row_actions?

0
Все ответы на вопрос 1
8
26

При использовании пользовательских типов записей применяется фильтр 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.

18 апр. 2011 г. 09:28:21
Комментарии

Имеет ли $post область видимости? подсказка подсказка ;)

t31os t31os
18 апр. 2011 г. 14:38:11

@t310s Исправил @Bainternet, надеюсь, ты не против ,)

kaiser kaiser
18 апр. 2011 г. 15:37:23

@kaiser: И улучшил твой фикс!

Jan Fabry Jan Fabry
18 апр. 2011 г. 16:31:20

Привет, я уже использовал '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' и т. д., используя ярлык страницы с действиями строки).

Rutwick Gangurde Rutwick Gangurde
18 апр. 2011 г. 18:31:41

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

Bainternet Bainternet
18 апр. 2011 г. 23:41:03

Нет! 'Feedback' — это комментарий к пользовательской записи вместе с кучей метаданных для этого комментария! Я создаю совершенно новый раздел, в котором все эти 'Feedbacks' перечислены в одном месте, откуда пользователь может их просмотреть, одобрить, снять одобрение и удалить. Это похоже на страницу 'Comments', но с собственной настройкой только для отображения 'Feedbacks'.

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

Rutwick Gangurde Rutwick Gangurde
19 апр. 2011 г. 20:55:31

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

[потирает голову]

somatic somatic
5 мая 2011 г. 08:22:04

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

Rutwick Gangurde Rutwick Gangurde
6 мая 2011 г. 18:53:37
Показать остальные 3 комментариев