サポート » 使い方全般 » query_posts内にカスタムフィールドの値を入れられるようにしたい

  • 解決済 kawa2425

    (@kawa2425)


    いつも助けていただいております。ありがとうございます。
    以下のテストが値になるのですが、ここにカスタムフィールドで管理画面から値を入れられるようにしたいのですが、うまくいきません。
    以下の状態でちゃんと表示されるので、あとは値を入力できるようになれば完成だと思うのです。みなさまよろしくお願いいたします。

    <?php
    query_posts(
    	array(
    		'meta_query' => array(
    			array(	
    
    					'value'=>'テスト'
    				)
    			)
    		)
    	);
    
    // ループ
    if ( have_posts() ) :
      while ( have_posts() ) : the_post();
    
    	 get_template_part('content-archive-kensaku');
    
      endwhile;
    else:
    endif;
    
    // クエリをリセット
    wp_reset_query();
    ?>

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • ghvst

    (@ghvst)

    以下のテストが値になるのですが、ここにカスタムフィールドで管理画面から値を入れられるようにしたいのですが、うまくいきません。

    うまくいきません…というところを、例えば、「このようにした」⇒「こうなった」という風に書いて頂けるとコメントしやすいと思います。

    トピック投稿者 kawa2425

    (@kawa2425)

    ghvstさま ご連絡ありがとうございました。

    現在、子犬販売サイトを制作しておりまして、ブリーダー(子犬を育てて販売する人)のページ内に、ブリーダーが登録した子犬を一覧したいと思っております。
    現在、このような状態で固定の値をテンプレート内に入れておけば表示まではできている状態なんです。
    ★現状

    少し話はそれますが、
    ブリーダーページではなく、子犬情報ページでは以下のようなやり方で、ページ下部のブリーダーの表示を実現できたので、ブリーダーページでも同様にやってみたのですが、ブリーダーページのIDが引き継がれてしまい、子犬の情報が表示されませんでした。
    ★子犬情報ページ

    <?php
    $post_id = get_field('breeder_id_page'); //数字は記事のIDを入れてください
    $post = get_post($post_id, 'OBJECT' , 'raw'); //指定した記事のIDの情報を取得
    $post_include =get_template_part('content-archive-coordinatorinfo');
    echo $post_include; //出力します
    ?>

    それで、いろいろ調べたのち、最初に投稿させていただいた

    <?php
    query_posts(
    	array(・・・・

    の形まで持って行けました。

    ですが、その後が止まってしまっております。
    何分、はじめてWordPressで構築しているもので知識不足を痛感しております。

    ほかにも、ご不明な点がありましたらご指示ください。
    よろしくお願いいたします。

    ghvst

    (@ghvst)

    下記のようにテンプレートを作れば良さそうですね。

    1. 投稿ページにカスタムフィールドを設けて値を入れておく。
    2. その投稿ページのテンプレートの中でカスタムフィールドの値を読み取る。
    3. query_posts のパラメータ ‘value’=>’テスト’ の部分に、読み取ったカスタムフィールドの値を置く。

    kawa2425さん、上記の2番目がうまくいかないのでしたら
    もしかすると関数 get_post_meta の使い方が問題でしょうか?

    トピック投稿者 kawa2425

    (@kawa2425)

    ghvst様 

    ご返信・ご教授ありがとうございました。

    いただいたコメントをもとに再度チャレンジしてみます。
    結果が出ましたら、またご報告いたします。

    ありがとうございました。

    トピック投稿者 kawa2425

    (@kawa2425)

    ghvst様

    またご質問で、恐縮です。申し訳ないです。

    以下で ‘value’=>’テスト’ とありますが
    テストの部分にカスタムフィールドの値をどうやっていれるのかが、探してみましたが見つかりませんでした。
    そもそもこの形で良いのかどうかも判断がつかずにいます。
    この形で進めてもいいのでしょうか。

    <?php
    query_posts(
    	array(
    		'meta_query' => array(
    			array(	
    
    					'value'=>'テスト'
    				)
    			)
    		)
    	);
    
    // ループ
    if ( have_posts() ) :
      while ( have_posts() ) : the_post();
    
    	 get_template_part('content-archive-kensaku');
    
      endwhile;
    else:
    endif;
    
    // クエリをリセット
    wp_reset_query();
    ?>
    トピック投稿者 kawa2425

    (@kawa2425)

    続けてすいません。

    以下のような形でもやってみたんですが、該当記事だけでなく
    投稿記事がすべて出力される形になってしまいます。

    現状

    <?php
    $args = Array(
                     'post_type' => 'post', //投稿記事から
    		 'meta_key' => 'breeder_namae', //カスタムフィールド名
    
                   );
    $pickupitem = new WP_Query($args); //絞り込みの条件で抽出した記事の配列を$pickupitemに代入
    if($pickupitem -> have_posts()) :
         while ($pickupitem -> have_posts()) : $pickupitem -> the_post();
         get_template_part('content-archive-kensaku');
        endwhile;
    endif;
    ?>

    以下で ‘value’=>’テスト’ とありますが
    テストの部分にカスタムフィールドの値をどうやっていれるのか

    二つに分けるのがよいと思います。

    1. カスタムフィールドの値を読んでphpの変数に入れる
    2. ‘テスト’ の部分を、その変数に置き換える

    カスタムフィールドを読む方法は、下記のページを参考になさっては如何でしょう。
    カスタムフィールドの使い方 – WordPress Codex 日本語版
    「PostMeta関数」の「内部関数」に書かれている、get_post_custom_values が使えると思います。
    関数リファレンス/get_post_custom_values

    そもそもこの形で良いのかどうかも判断がつかずにいます。
    この形で進めてもいいのでしょうか。

    query_posts を使うのは、お勧めではないそうです。私も最近知ったばかりなのですが。

    ブリーダー(子犬を育てて販売する人)のページ内に、ブリーダーが登録した子犬を一覧したい

    ブリーダーのページに付けたカスタムフィールドから値を読み、子犬のページを(その値で検索して)表示させたいのですよね。WP_Query を使ってできると思います。

    他には、get_posts を使ってループを組む方法もあります。
    テンプレートタグ/get_posts
    上記ページのセクション「カスタムフィールドパラメータ」に載っている例題を少し変形すれば使えるのではないでしょうか。

    トピック投稿者 kawa2425

    (@kawa2425)

    ghvstさま

    詳しいご説明ありがとうございました。
    頂いたヒントをもとに再度、試してみます。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「query_posts内にカスタムフィールドの値を入れられるようにしたい」には新たに返信することはできません。