サポート » テーマ » <?php query_posts(にカスタムフィールドの数値を反映させたいです

  • naoko2001

    (@naoko2001)


    今年からwordpressのテーマを勉強し始めたものです。よろしくお願いします。

    wordpress のバーションは最新で、xserverでテストしています。サーバーの設定については初期のノーマル情報で運用しています。

    ■困っている事

    カスタムフィールドを利用して、特定のタグを入力→ワードプレスで特定タグを指定して記事一覧を表示したいと思っていますが、思うように表示してくれません。

    具体的には

    <?php query_posts(‘tag_id=0000&orderby=desc’);?>

    の0000のところをカスタムフィールドで入力して、タグのidを指定したいと思っています。

    ■現状

    現状、
    <?php query_posts(‘tag_id=<?php $key=”hogehoge”; echo get_post_meta($post->ID, $key, true); ?>&orderby=desc’);?>

    とテーマに書いてもだめでした。いろいろ調べていくと、このやり方は間違いっているのはうすうすと分かってきた理解レベルです。

    <?php query_posts(‘tag_id=0000&orderby=desc’);?>を単独で記載したときは、投稿画面で入力した数値がきちんと表示されています。

    ■とっても知りたい事

    では、具体的に

    <?php query_posts(‘tag_id=この部分&orderby=desc’);?>

    #この部分#のところにカスタムフィールドの値を反映させるには、どのようにすれば可能なのでしょうか?知識のある方、ぜひ助けて頂けませんでしょうか?よろしくお願いします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • ishitaka

    (@ishitaka)

    こんにちは

    カスタムフィールドの値は、タグの ID かしら?タグの ID の場合は、下記のようなコードになると思います。

    <?php
    $tag_id = (int) get_post_meta( $post->ID, 'hogehoge', true );
    query_posts( "tag_id={$tag_id}&orderby=desc" );
    ?>

    なお、query_posts() はテンプレート内で使用することは推奨されていないので、get_posts() や WP_Query クラス等を使用することをおすすめします。
    https://wpdocs.osdn.jp/テンプレートタグ/query_posts

    WP_Query クラスの場合の例:

    <?php
    $tag_id = (int) get_post_meta( $post->ID, 'hogehoge', true );
    $the_query = new WP_Query( "tag_id={$tag_id}&orderby=desc" );
    if ( $the_query->have_posts() ) {
    	while ( $the_query->have_posts() ) {
    		$the_query->the_post();
    		echo get_the_title();
    	}
    	wp_reset_postdata();
    }
    ?>
    • この返信は5年前にishitakaが編集しました。
    ishitaka

    (@ishitaka)

    なお、このフォーラムでコードを貼り付ける場合は、コードを選択し [code] ボタンをクリック(逆クォートで囲む)してください。
    詳細は、下記ページをご覧ください。
    https://wpdocs.osdn.jp/フォーラムへようこそ#.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E6.8A.95.E7.A8.BF

    CG

    (@du-bist-der-lenz)

    特定のタグが付いている記事のリストを作るということでしょうか、一覧のアーカイブページを表示させたいのでしょうか。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「<?php query_posts(にカスタムフィールドの数値を反映させたいです」には新たに返信することはできません。