2009-08-21 33 views
0

基本的に私は、アーカイブページの将来の日付の投稿を許可するプラグインで遊んでいます。私の質問はこの特定の機能よりも広範ですが、誰もが何らかのコンテキストを好む。プラグインでWordPressのクエリを変更する正しい方法は何ですか?

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

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ステートメント。

質問は何ですか?私は何が欠けていますか?

ありがとうございました。あなたはおそらく何をしたいのかFunction Reference WP_Query

rewind_posts() 
Resets $current_post and $post. 

答えて

0

ただ、推測、私はWPの専門家ではないんだけど、多分rewind_postsとしては、WPのアクションでそのフィルタを削除しています。 wp、add_action( 'wp'、 'my_remove_filter_action'、999)にアクションを追加し、 'my_remove_filter_action'にクエリに付けるフィルタを削除してページクエリに影響を与え、残りのページについては不活性にします負荷。

WPより前に発生する他のフィルタを検索すると、フィルタを削除することもできます。基本的には、そのクエリをメインページクエリのみに制限しようとします。

関連する問題