人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

WordPressのカスタムフィ?ルドについて教えてください。
WordPressの投稿に対して「住所」というカスタムフィ?ルドを作り、各POSTに住所情報を入れました。
この住所を使って、表示する投稿をユ?ザ?がコントロ?ルできるようにしたいのですが、やり方がわからず悩んでおります。
固定ペ?ジに入力フォ?ムを表示させ、ユ?ザ?が住所を入れたら、その住所が含まれる投稿を表示させたいのです(ル?プ)。もしそれが可能ならばやり方を教えていただけませんでしょうか。
できれば最初は入力フォ?ムだけの表示で、住所を入れて「表示」ボタンを押すと初めてそれに該当する投稿がル?プ表示されるようにしたいのです。
(イメ?ジを画像にしてみました)
なにとぞよろしくお願いいたします。

1459014221
●拡大する

●質問者: ykhpno1
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

質問者から

ちなみに、住所のフィ?ルド名は、「address」としております。


1 ● pogpi
●30ポイント

WordPressは使わずに、SQLでLIKEとかを使って住所をPOSTさせてデータベースから該当するものを持って来ればいいんじゃないでしょうか。


ykhpno1さんのコメント
回答いただきありがとうございます。 ちょっとレベルに違いがあり過ぎて、トンチンカンな応答になってしまったら申し訳ないです。 質問には記載しておりませんでしたが、店舗情報をグ?グルマップ上に表示させておりまして、その表示のさせ方が投稿(店舗情報)のル?プなのです。 なので、デ?タの取得方法としては、条件が合う店舗情報(投稿)のみをル?プさせてマップ上に出力させたいのです。 いただいた回答で上記のことは可能でしょうか。もし可能であれば、お手数ながら参考サイトなどを教えていただけませんでしょうか。 いただいた回答を元にググってみたのですが、探し当てたペ?ジの情報が、pogpiさんがおっしゃってることと合致してるのかすらわからず、私自身のレベルの低さが情けないです。 本当に困っておりましたので回答をいただけれすごく嬉しいです。 ありがとうございます!

pogpiさんのコメント
そのカスタムフィールドの名前が「juusyo」だとすると、投稿を取得するSQLは、次のようになります。 SELECT * FROM tablename WHERE juusyo LIKE '東京都%' 「東京都」は、場合によって「東京都千代田区」とかに変えることになります。 その結果を、ループに渡せばいいですね。

2 ● studiocherry
●270ポイント ベストアンサー

Wordpress で、カスタムフィールドの値で、絞り込む方法ですね。

ちょっと時間がなくて、試せていないのですが、こんな感じのコードで、カスタムフィールドで絞り込んだ項目を表示できると思いますので、書いておきます。

下記のように WP_Query のパラメータとして、 meta_query を渡して、実行すると カスタムフィールド key に value を含んでいる投稿のみ表示できます。

<?php
$args = Array(
 'post_type' => 'post',
 'posts_per_page' => -1,
 'meta_query' => array(array(
 'key' => 'address',
 'value' => '東京都',
 'compare' => 'LIKE'
 ))
);
$the_query = new WP_Query($args);
if($the_query -> have_posts()):
 while($the_query -> have_posts()): $the_query -> the_post(); 
 ?>
 <div id="post-<?php the_ID(); ?>" <?php post_class('list-post-item'); ?>>
 <h2><a href="<?php echo get_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
 <div class="entry-meta">
 <span class="date"><?php the_time( get_option('date_format') ); ?></span>
 </div>
 <?php the_excerpt(); ?>
 </div>
<?php
 endwhile;
endif;
wp_reset_postdata();
?>

「入力フォ?ム」から受け取った値で、可変にする場合は、「東京都」部分を フォームから受け取った値を使うようにします。


ykhpno1さんのコメント
ありがとうございます!いきなりやりたかった事が実現できました。 書いていただいたコ?ドを元にさせていただき、valueに書いた住所を持つ店舗だけがマップ上に表示されるようになりました!ありがとうございます! 次は入力フォ?ムから受け取った値で表示を変えるようにしたいのですが苦戦しておりまして、お手数ながらこちらもご教授いただけませんでしょうか。 固定ペ?ジで新しいペ?ジを作り、そこに入力フォ?ムのみを設置しておき、入力フォ?ムに住所が入力されれば、マップのペ?ジに飛び、その住所でマップ上の店舗が絞り込まれている、というのが理想なのです。

studiocherryさんのコメント
4月になって、忙しくなってしまったので、回答が遅くなって申し訳ありません。

studiocherryさんのコメント
既存の検索フォームを カスタムフィールドで検索できるように 置き換える例を書いておきます。 --- 標準の検索フォームで、入力された検索キーワードは、 get_search_query() で、取得できます。 テンプレートに含まれている search.php の 「get_header(); ?>」の次の行に 以下のように追加すると「検索フォームで入力された値を get_search_query() で、取得して、カスタムフィールド adress の検索パラメータに指定して検索した結果を取得できます。 メインループを変更しているので、表示部分は標準検索のままで使えると思います。 // -- ここから -- <?php global $wp_query; $search_query = get_search_query(); $args = Array( 'post_type' => 'post', 'posts_per_page' => -1, 'meta_query' => array(array( 'key' => 'address', 'value' => $search_query, 'compare' => 'LIKE' )) ); query_posts( $args ); $total_results = $wp_query->found_posts; ?> // -- ここまで -- を追加してください。 テンプレートの検索フォームに 入力したキーワードで、カスタムフィールドの内容を検索した結果が、表示されると思います。 後は、試行しながらいろいろ試してみてください。

ykhpno1さんのコメント
ありがとうございます、コメントいただいていたのですね! ただいま私事で出先におりまして、週明けにも教えていただいたことを試させていただきたく思っております。本当にいつも助けていただいて感謝しております。ありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ