Я работаю над многопользовательской настройкой WordPress и сделал так, чтобы определенный тип пользователей мог видеть и взаимодействовать только с сообщениями, изображениями, страницами и т. Д., Которые они создали. Код для этого выглядит следующим образом:
add_filter('pre_get_posts', 'current_author_posts');
function current_author_posts($query) {
if ($query->is_admin && current_user_can('artist')) {
global $user_ID;
$query->set('author', $user_ID);
}
return $query;
}
Это хорошо работает в интерфейсе администратора, но все сообщения отображаются неправильно:
Известны ли вам какие-либо фильтры или зацепки, чтобы манипулировать этими цифрами и быть корректными для постов, страниц, носителей и пользовательских типов постов?
Большое спасибо.
wp_count_posts
фильтрОтветы:
Я понял, что это почти работает, но необходимы уточнения, чтобы соответствовать специфике вопроса и по-разному работать с вложениями и посттипами (см. Комментарии в коде) ...
Во-первых, я думаю, стоит отметить, как я нашел фильтр:
apply_filters( 'views_' . $screen->id, $views )
осмотреть элемент
сделать глобальный поиск в
/wp-admin
и/wp-includes
для sububsub (смешное имя класса, кстати) .../wp-admin/includes/class-wp-list-table.php
источник
На момент написания этой функциональности теперь находится в классе WP_List_Table, в методе "views ()".
Фильтр теперь выглядит так:
$ views будет содержать массив каждого элемента списка:
Вы можете подключить его к обработчику current_screen с приоритетом> 10:
Затем вы можете добавить / изменить / удалить элементы в списке.
источник
Я знаю, что это старый пост, но я несколько раз перебирал его в поисках лучшего решения, поэтому я решил добавить кое-что в микс. До сегодняшнего дня я анализировал каждое отдельное число из строк, отфильтрованных по
view_{$screen->id}
. Но я только что узнал, что эти числа анализируются в строке 248 class-wp-posts-list-table.php .view_{$screen->id}
Предполагается, что этот фильтр будет использоваться для добавления и удаления видов, а не для изменения чисел (глупо).Функция, которая делает все вычисления чисел в круглых скобках строки представления
wp_count_posts()
. И он получил фильтр с тем же именем, который существовал с версии 3.7.0 (выпущен 24 октября 2013 года, через два года после того, как был задан этот вопрос).источник