Хук Wordpress для отображения последних ожидающих сообщений вместо уже опубликованныхPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Хук Wordpress для отображения последних ожидающих сообщений вместо уже опубликованных

Сообщение Anonymous »

Я застрял на чем-то, что, я уверен, должно быть довольно простым, но меня это сводит с ума. На работе я вынужден использовать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»