web-dev-qa-db-ja.com

現在の分類法に従って投稿する

助けてくれてありがとう。

分類法を使用してカスタムアーカイブ(アーカイブではありません)にいます。そして表示したいのですが。

  • 他のカスタム投稿
  • これとともに 現在の分類法

それほど難しいようには思えませんが、私にとってはそうです...私はクエリで私の税の言葉を使う正しい方法を見つけられませんでした...

これが私の試みのうちの1つです。

 $ terms = wp_get_post_terms($ post-> ID、 'identite'); //分類法を取得する
 
 foreach($ termsを$ termとして){
 echo "$ term-> slug"; //テスト専用 -  ok 
 
 $ args = array(
 'post_type' => 'example'、
 'tax_query' => array([。 [relation] => [AND]、
配列(
 'taxonomy' => 'identite'、
 'field' => 'ID'、
 。] 'terms' => $ terms 
)
); // end args 
 
 $ query = new WP_Query($ args); 
 
 if($ query-> have_posts()){
 while($ query-> have_posts()){
 $ query-> the_post (); 
 
 //ちょっと祈りますが、うまくいきません
 
} // end of while 
 
} 

私はこのエラーメッセージを得ます: クラスWP_Termのオブジェクトはintに変換できませんでした

オブジェクトを変換して読みやすくするためのアイデアはありますか?どうもありがとう

(編集:私は関数wp_list_pluckを使ってみたが成功しなかった)

1
Cha

WP_Queryでこれを試してください

$args = array(
'post_type' => 'example',
'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'identite',
        'field'    => 'ID',
        'terms'    => $term->term_id
         )
    ),
 );// end args

OR

$args = array(
'post_type' => 'example',
'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'identite',
        'field'    => 'ID',
        'terms'    => array($term->term_id)
         )
    ),
 );// end args

$termはオブジェクトで、tax_queryはidの配列を期待します。

参照してください: https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

1

$args配列の設定方法が原因で、このエラーメッセージが表示されます。 tax_queryには、現在の投稿のすべての用語IDの配列を渡します。また、fieldの値が正しくありませんでした(Codexの WP_Query#Taxonomy_Parameters を参照)。

最終的なコードは次のようになります。

<?php 

$terms = wp_get_post_terms( $post->ID, 'identite'); 
$terms_ids = [];

foreach ( $terms as $term ) {
    $terms_ids[] = $term->term_id;
}

$args = array(
    'post_type' => 'example',
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'identite',
            'field'    => 'term_id',
            'terms'    => $terms_ids
        )
    ),
);

$query = new WP_Query($args);

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();

        // All the magic here
    }
}
0