Как правильно изменить запрос WordPress в плагине? - PullRequest
0 голосов
/ 21 августа 2009

В основном я играю с плагином, который позволяет размещать посты в будущем на страницах архива. Мой вопрос шире, чем эта конкретная функциональность, но всем нравится какой-то контекст.

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

Я могу успешно переписать запрос, который дает мне результаты, которые я хочу, вот так:

function modify_where( $where ) {
  global $wp_query;
    // define $year, $cat, etc
  if( is_archive() ) {
    $where = "  AND YEAR(wp_posts.post_date)='".$year."' AND wp_term_taxonomy.taxonomy = 'category' AND wp_term_taxonomy.term_id IN ('".$cat."') AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future')";
  }
  return $where;
}

add_filter('posts_where', 'catCal_where' );

Однако, если я пытаюсь создать новый WP_ Query('different_query_stuff ') после основного цикла, новый запрос использует тот же оператор WHERE, как описано выше.

Вопрос: чего мне не хватает?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 августа 2009

Что вы, вероятно, хотите сделать, это удалить этот фильтр в действии wp. Добавьте действие в wp, add_action ('wp', 'my_remove_filter_action', 999) и попросите, чтобы 'my_remove_filter_action' удалил фильтр, который вы наложили на запрос, чтобы он воздействовал на запрос страницы и затем оказывался инертным для остальной части страницы. нагрузка.

Возможно, вам удастся найти какой-то другой фильтр, который срабатывает раньше, чем WP, чтобы также удалить этот фильтр. По сути, вы хотите попытаться ограничить этот запрос только запросом главной страницы.

0 голосов
/ 23 августа 2009

Просто предположение, поскольку я не эксперт WP, но, возможно, rewind_posts из Справочник по функциям WP_Query

rewind_posts()
Resets $current_post and $post.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...