web-dev-qa-db-ja.com

カスタム投稿タイプとカスタム分類の条件付きクエリ

私は次のようなプロジェクトに取り組んでいます

  • 'Experience Statement'というカスタム投稿タイプ
  • 'Expertise'という投稿タイプに関連付けられたカスタム分類法
  • カスタム分類法の6つの異なる用語:沿岸、内陸、海洋、水路、船舶、電気通信

それで、私はこのループを作成しました、それはとてもうまくいきます、そして、私はそれぞれにこのループで6つの異なるテンプレートページを作成しました(私はちょうどそれぞれのために用語を変える)<?php $page = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts("post_type=experiencestatements&expertise=coastal&showposts=10&paged=$page"); if ( have_posts() ) : while ( have_posts() ) : the_post() ?>

だから、これはうまく機能していますが、私は別のテンプレートページを作成する必要があります:すなわち各用語のためのpage-exp-stmt-coastal.php。私は6つの(そして数えて)テンプレートページの代わりにそれぞれの用語のための条件ステートメントを持つ1つのテンプレートページだけを持ちたいです。 6ページ以上の異なるページを持っているということは、クライアントがTweakを欲しいと思う度に私が入り、それぞれを変える必要があるということです。

まとめると、分類法の用語に応じてループを変更する条件付きタグを作成するための手助けが必要です。そして、どうすればよいかわかりません。任意の助けは大歓迎です。

ありがとう、ラリー

1
Larry4Design

これを行うにはいくつかの方法があります。1つの方法はget_the_termsを使用することです。

ロジックは、ループを実行し、その分類法の用語に基づいて出力をカスタマイズすることです(これはおそらくそのままでは機能しません)。

//do a custom query here if needed
 if ( have_posts() ) : while ( have_posts() ) : the_post();

 $terms = get_the_terms($post->ID, 'Expertise');
//this will return and array of terms for your Expertise taxonomy.

   foreach ( $terms as $term ) {

     if($term->name == 'marine') {

       // do custom stuff here 

     }elseif($term->name == 'waterway') {

       // do custom stuff here
     }elseif .... 

あなたがコメントした後、それはあなたが用語ごとのカスタムコンテンツ、別名6つの用語のための同じコンテンツが欲しくないように思えます、これもまたこれをするいくつかの方法があります。
http://codex.wordpress.org/Class_Reference/WP_Query

$args = array(
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'Expertise',
            'field' => 'slug',
            'terms' => array( 'marine', 'waterway', 'you_other_terms_here' ),
        ),

    )
)
$query = new WP_Query( $args );

別の方法は、私のオリジナルの提案を使用し、get_the_termsを使用したい配列内のすべてのin_arrayに一致させることです。

foreach ( $terms as $term ) {

if (in_array('marine', '$term')) && (in_array('waterway', '$term')) && etc..
   //do stuff
}
1
Wyck

というテンプレートを作成できませんでした

分類法 - Expertise.php

に従って: http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display

WPはすでに分類法の各用語に対して適切なクエリを使用しているため、ループを調整する必要はまったくないように思われます。ただし、ここで用語名をテストし(クエリ変数に含まれることもあります)、保証どおりに別の表示コードをトリガすることもできます。

0
helgatheviking