2016-05-26 4 views
0

私はできるだけよく説明しようとします(私の英語が悪い場合は申し訳ありません、これは私の母国語ではありません)。functions.phpで複数のpre_get_postsを使用するには?

私は2つのカスタムポストタイプと2つのカスタムポストタイプアーカイブページを持っています。

これらのページに表示されている投稿をフィルタリングするために、function.phpファイル内に2つの異なる関数を作成しました。以下のコードでは、 "pre_get_posts"関数を使用しています。

私のfunctions.php:

add_action('pre_get_posts', 'my_pre_get_posts'); 
function my_pre_get_posts($query) { 

some code here... 

} 

add_action('pre_get_posts', 'my_pre_get_posts_2'); 
function my_pre_get_posts_2($query) { 

some code here... 

} 

問題は、第二の機能(my_pre_get_posts_2)が最初のもの(my_pre_get_posts)に上書きされ、最初の関数は、カスタムポストタイプのアーカイブのページで作業していないことです。

私はis_post_type_archive('custom_post_type')を使用しようとしましたが、最初の機能はまだ動作していません。

最初の機能を特定のカスタムポストタイプのアーカイブページにのみ割り当て、ほかのページでは呼び出さないために必要なことはありますか?

答えて

1

これは、in the Codexに記載されています。単一のコールバックを使用する必要があります。

function my_pre_get_posts($query){ 
    if (is_post_type_archive('cpt_1')) { 
     // Do stuff for a custom post type 
    } elseif (is_post_type_archive('cpt_2')) { 
     // Do stuff for a different custom post type 
    } 
} 
add_action('pre_get_posts', 'my_pre_get_posts'); 
+0

実際に*コールバックは1つ必要ないことに注意することが重要です。あなたは2つを使うことができますが、それぞれに条件を追加する必要があります。 – rnevius

関連する問題