だから、私は社会政治のウェブサイトに取り組んでいます。現在、ノースカロライナ州の 100 郡すべてを含むマップ ページに取り組んでおり、各郡にカーソルを合わせると、対応する選挙結果/データが表示されます。最初のループでは、各政党 (共和党、民主党、その他) の選挙結果の数字とパーセンテージを引き出しています。各選挙結果に対応する候補者を表示するには、ネストされたループを作成する必要がありました。ネストされたループを関数にスローすることにしたので、テンプレートの残りのコードと一緒に座っていません。これは、私の functions.php ファイルでは次のようになります。
function grabcandidatename($county, $office, $party) {
$args = array(array('key' => 'county', 'value' => $county),array('key' => 'office', 'value' => $office),array('key' => 'party', 'value' => $party) );
$c_query = new WP_Query(array(
'post_type' => 'government_officials',
'show_posts' => 1,
'meta_query' => array(
'relation' => 'AND',
$args
)
));
if($c_query->have_posts() ) :
while ($c_query->have_posts()) : $c_query->the_post();
echo the_title();
endwhile;
wp_reset_postdata();
endif;
}
よし、これで、このビットのテンプレート ファイルは次のようになります。
//This pulls information from the election results that each candidate custom post type can relate to.
$category = get_the_category();
$officer = get_field('office');
これが呼び出される関数です。選挙結果のループで呼び出されていることを思い出してください。
grabcandidatename($category,$officer,'republican');
さて、これらすべてから得られる結果: 候補者名を取得していますが、対応する選挙結果の候補者名を取得する代わりに、すべての候補者名を各選挙結果と一緒に一覧表示しています。したがって、メタ キーと値が無視されていると考えられます。今は $args 変数にそれらを詰め込んでいることは理解していますが、それは単に物事を整理するためでした。「meta_query」を使用して配列を一覧表示すると、候補者の名前が選挙結果ページに表示されません。
前もって感謝します!
わかりました、私はそれを修正しました。
さて、上記のコードは機能します。私はただのばかで、郡とオフィスのメタ データ オプションを入力するのを忘れていました。ただし、100 の郡すべてに再入力する必要がないように、選挙結果に使用される分類法を候補者にも関連付けました。したがって、コードは次のようになります。
タクソノミを共有するには:
register_taxonomy('the_county', array('election_results','government_officials'), $args);
関数内にネストされたループを作成するには:
function grabcandidatename($county, $office, $party) {
$c_query = new WP_Query(array(
'post_type' => 'government_officials',
'show_posts' => 1,
'taxonomy' => 'the_county',
'term' => $county,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'office',
'value' => $office
),
array(
'key' => 'party',
'value' => $party
),
)
));
if($c_query->have_posts() ) :
while ($c_query->have_posts()) : $c_query->the_post();
echo the_title();
endwhile;
wp_reset_postdata();
endif;
}
次に、ページ テンプレートの別のループ内にネストされたループを含む関数を呼び出します。
grabcandidatename($termname,$officer,'republican');