Я застрял на чем-то, что, я уверен, должно быть довольно простым, но меня это сводит с ума. На работе я вынужден использовать WordPress, с которым у меня нет опыта, и я до сих пор пытаюсь понять, как он работает в отношении перехватчиков и фильтров.
Что я хочу, так это довольно просто:
Я использую блок последние сообщения для отображения сообщений, написанных пользователями. За исключением того, что страница, над которой я работаю, будет интерфейсом для модератора веб-сайта, которому придется видеть сообщения со статусом «ожидание», а не со статусом «опубликовать». Я не смог найти возможности изменить это в редакторе, поэтому пытаюсь установить перехватчик для изменения запроса с «post_status» => «publish» на «post_status» => «pending», но это не работает , я получаю «Упс!» Эту страницу невозможно найти».
Вот что я написал в файле function.php:
function name_of_the_function( $query ) {
if( get_query_var('pagename') == 'name_of_the_page' && current_user_can('publish_posts') && $query->is_main_query() ) {
$query->set ( 'post_status', 'pending' );
return $query;
add_filter( 'pre_get_posts', 'name_of_the_function' );
Если я оставлю эту функцию точно так же, но напишу «опубликовать» вместо «ожидания», на странице будут правильно отображаться последние опубликованные сообщения, но с «ожиданием» я получу упомянутое мной сообщение до. И я попробовал использовать add_action вместо add_filter и получил те же результаты.
Я хотел бы добавить, что у меня есть ожидающие сообщения, и если я напишу следующее в шаблоне страницы, они будут найдены :
$args = array (
'cat' => 5,
'post_status' => 'pending'
);
$query = new WP_Query( $args );
while ( $query->have_posts() ) {
$query->the_post(); echo get_the_title();
}
Просто чтобы проверить, прямо в файл wp-includes/latest-posts.php я изменил:
$args = array(
'posts_per_page' => $attributes['postsToShow'],
'post_status' => 'publish', 'order' => $attributes['order'],
'orderby' => $attributes['orderBy'],
'suppress_filters' => false,
);
в :
$args = array(
'posts_per_page' => $attributes['postsToShow'] ,
'post_status' => 'pending',
'order' => $attributes['order'],
'orderby' => $attributes[ 'orderBy'],
'suppress_filters' => false,
);
Он работает и отображает ожидающие сообщения, но, конечно, я не могу использовать это, так как файл будет удаляться при каждом обновлении WordPress.
Извините за длинный пост, но я сейчас потерялся и не знаю, что еще делать , Я просмотрел весь Интернет, но не нашел ответа на этот вопрос. Буду очень признателен за любую помощь по этому вопросу, заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/698 ... -published
Хук Wordpress для отображения последних ожидающих сообщений вместо уже опубликованных ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Показать 5 последних сообщений в нижнем колонтитуле Wordpress в третьем пункте меню.
Anonymous » » в форуме Php - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-