0

基本的に私は、アーカイブ ページで将来の日付の投稿を可能にするプラグインで遊んでいます。私の質問は、この特定の機能よりも幅広いものですが、誰もがいくつかのコンテキストが好きです。

私は多くのプラグイン開発コンセプトについて頭を悩ませていますが、非常に基本的なものが欠けているに違いありません。

次のように、必要な結果が得られるクエリを正常に書き直すことができます。

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 ステートメントを使用します。

質問は次のとおりです。何が欠けていますか?

ありがとう。

4

2 に答える 2

0

私は WP の専門家ではないので、推測ですが、関数リファレンス WP_Queryrewind_postsからの可能性があります。

rewind_posts()
Resets $current_post and $post.
于 2009-08-23T14:01:54.047 に答える
0

おそらくやりたいことは、 wp アクションでそのフィルターを削除することです。wp にアクション add_action('wp','my_remove_filter_action',999) を追加し、その 'my​​_remove_filter_action' でクエリに設定したフィルターを削除して、ページ クエリに影響を与え、ページの残りの部分で不活性になるようにします。ロード。

WP よりも早く起動してフィルターを削除する他のフィルターを見つけることもできます。基本的に、そのクエリをメイン ページのクエリのみに制限しようとします。

于 2009-08-24T14:25:50.257 に答える