1459014221 WordPressのカスタムフィ-ルドについて教えてください。

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2016/03/27 02:43:41
  • 終了:2016/04/03 01:36:59
id:ykhpno1

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

ベストアンサー

id:studiocherry No.2

studiocherry回答回数269ベストアンサー獲得回数952016/04/01 00:04:22

ポイント270pt

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();
?>

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

他2件のコメントを見る
id:studiocherry

既存の検索フォームを カスタムフィールドで検索できるように 置き換える例を書いておきます。

---
標準の検索フォームで、入力された検索キーワードは、 get_search_query() で、取得できます。
テンプレートに含まれている search.php の 「get_header(); ?>」の次の行に 以下のように追加すると「検索フォームで入力された値を get_search_query() で、取得して、カスタムフィールド adress の検索パラメータに指定して検索した結果を取得できます。
メインループを変更しているので、表示部分は標準検索のままで使えると思います。

// -- ここから --

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;
?>
// -- ここまで --

を追加してください。

テンプレートの検索フォームに 入力したキーワードで、カスタムフィールドの内容を検索した結果が、表示されると思います。

後は、試行しながらいろいろ試してみてください。

2016/04/09 22:18:54
id:ykhpno1

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

2016/04/15 03:45:05

その他の回答(1件)

id:pogpi No.1

pogpi回答回数355ベストアンサー獲得回数462016/03/31 13:02:52

ポイント30pt

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

id:ykhpno1

回答いただきありがとうございます。
ちょっとレベルに違いがあり過ぎて、トンチンカンな応答になってしまったら申し訳ないです。

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

本当に困っておりましたので回答をいただけれすごく嬉しいです。
ありがとうございます!

2016/03/31 14:21:35
id:pogpi

そのカスタムフィールドの名前が「juusyo」だとすると、投稿を取得するSQLは、次のようになります。

SELECT * FROM tablename WHERE juusyo LIKE '東京都%'

「東京都」は、場合によって「東京都千代田区」とかに変えることになります。

その結果を、ループに渡せばいいですね。

2016/03/31 16:49:35
id:studiocherry No.2

studiocherry回答回数269ベストアンサー獲得回数952016/04/01 00:04:22ここでベストアンサー

ポイント270pt

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();
?>

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

他2件のコメントを見る
id:studiocherry

既存の検索フォームを カスタムフィールドで検索できるように 置き換える例を書いておきます。

---
標準の検索フォームで、入力された検索キーワードは、 get_search_query() で、取得できます。
テンプレートに含まれている search.php の 「get_header(); ?>」の次の行に 以下のように追加すると「検索フォームで入力された値を get_search_query() で、取得して、カスタムフィールド adress の検索パラメータに指定して検索した結果を取得できます。
メインループを変更しているので、表示部分は標準検索のままで使えると思います。

// -- ここから --

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;
?>
// -- ここまで --

を追加してください。

テンプレートの検索フォームに 入力したキーワードで、カスタムフィールドの内容を検索した結果が、表示されると思います。

後は、試行しながらいろいろ試してみてください。

2016/04/09 22:18:54
id:ykhpno1

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

2016/04/15 03:45:05

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません