Я застрял на чем-то, что, я уверен, должно быть довольно простым, но меня это сводит с ума. На работе я вынужден использовать 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
Кемеровские программисты php общаются здесь
1719951303
Anonymous
Я застрял на чем-то, что, я уверен, должно быть довольно простым, но меня это сводит с ума. На работе я вынужден использовать WordPress, с которым у меня нет опыта, и я до сих пор пытаюсь понять, как он работает в отношении перехватчиков и фильтров.[b]
Что я хочу, так это довольно просто:
Я использую блок [i]последние сообщения[/i] для отображения сообщений, написанных пользователями. За исключением того, что страница, над которой я работаю, будет интерфейсом для модератора веб-сайта, которому придется видеть сообщения со статусом «ожидание», а не со статусом «опубликовать». Я не смог найти возможности изменить это в редакторе, поэтому пытаюсь установить перехватчик для изменения запроса с «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'[/b],[b] 'order' => $attributes['order'],
'orderby' => $attributes['orderBy'],
'suppress_filters' => false,
);
в :
$args = array(
'posts_per_page' => $attributes['postsToShow'] ,
'post_status' => 'pending'[/b],
'order' => $attributes['order'],
'orderby' => $attributes[ 'orderBy'],
'suppress_filters' => false,
);
Он работает и отображает ожидающие сообщения, но, конечно, я не могу использовать это, так как файл будет удаляться при каждом обновлении WordPress.
Извините за длинный пост, но я сейчас потерялся и не знаю, что еще делать , Я просмотрел весь Интернет, но не нашел ответа на этот вопрос. Буду очень признателен за любую помощь по этому вопросу, заранее спасибо.
Подробнее здесь: [url]https://stackoverflow.com/questions/69866434/wordpress-hook-to-display-latest-pending-posts-instead-of-already-published[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия