WordPressにおけるPHPの超初歩的な質問をさせてください。

カスタムフィ-ルドで住所デ-タ(address)を作っており、各投稿にはそれぞれ住所が入っております。
ここまでが前提。
そして、固定ペ-ジに作った入力フォ-ムに、ユ-ザ-が住所を入れ「検索」ボタンを押すと、ユ-ザ-が入れた住所(place)に一致する住所を持つ投稿が一覧で表示されるようにしております。
下記コ-ド12行目で、$placeに値がある場合のみル-プが始まるようにしているのですが、それではどんな値を入力されてもル-プが始まってしまうので、入力された住所に、一致する投稿がある場合のみ、ル-プが始まるようにしたいのです。
この12行目をどう書き換えるべきでしょうか。
教えてください、よろしくお願いいたします。

<?php
$place = $_POST['place'];
$args = Array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_query' => array(array(
'key' => 'address',
'value' => $place,
'compare' => 'LIKE'
))
);
if ($place)
$the_query = new WP_Query($args);
while($the_query -> have_posts()): $the_query -> the_post();
?>

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2016/05/04 04:07:36
  • 終了:2016/05/10 23:29:17
id:ykhpno1

できれば、入力された住所に該当する投稿がない場合、「該当する投稿はありませんでした」と表示したいです。

ベストアンサー

id:a-kuma3 No.2

a-kuma3回答回数4325ベストアンサー獲得回数17732016/05/04 13:08:44

ポイント950pt

こんな感じだと、どうでしょうか。

<?php
    $place = $_POST['place'];
    $args = Array(
        'post_type' => 'post',
        'posts_per_page' => -1,
        'meta_query' => array(array(
            'key' => 'address',
            'value' => $place,
            'compare' => 'LIKE'
        ))
    );
    if ($place) {
        $the_query = new WP_Query($args);
        if ($the_query -> have_posts()) {
            while($the_query -> have_posts()) {
                $the_query -> the_post();
            }
        } else {
            echo "該当する投稿はありませんでした";
        }
    } else {
        echo "住所を指定してください";
    }
?>
他29件のコメントを見る
id:ykhpno1

さっそくコメントをいただきありがとうございます!
できると思う、と言っていただくだけで、この質問をするのがたいへん楽しみです。
a-kuma3さんに挙げていただいた①~④までを満足できればすごく嬉しいですが、④は全て表示されなくとも、表示されるマ-カ-の、だいたい真ん中くらいがマップの中心になる、というだけでも満足です。

サンプルのつぎはぎになるかも、というa-kuma3さんの回答が一番嬉しいかもしれません。
わからないことがあっても、それがサンプルから派生したものであれば追いかけやすいのかもしれないと思っております(笑)。
今までの経緯を全てa-kuma3さんに手掛けていただいておりますので、僕が求めるものに一番近い(もしくはそのものズバリな)答えをいただけると思っておりまして、明日たてる質問にa-kuma3さんに回答いただければ本当に嬉しいです。

2016/07/03 21:06:41
id:ykhpno1

お言葉に甘え、a-kuma3さんに手掛けていただいたコ-ドをぺたっと貼らせていただき、質問させていただきました。
http://q.hatena.ne.jp/1467609469

a-kuma3さんにのみご回答いただければもうそれで私は満足でして、お手すきの折に見てやっていただけませんでしょうか。
なにとぞよろしくお願いします。

2016/07/04 14:26:53

その他の回答(1件)

id:TransFreeBSD No.1

TransFreeBSD回答回数647ベストアンサー獲得回数2612016/05/04 13:08:29

ポイント35pt

have_posts()で条件分岐(if~)してください。
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query#.E3.81.B5.E3.81.A4.E3.81.86.E3.81.AE.E3.83.AB.E3.83.BC.E3.83.97
「// no posts found」のところに該当なしの表示を入れれば良いはずです。

id:ykhpno1

以下のようなエラ-表示になりまして、ちょっと苦戦しております。

ホニャララ.com ページは機能していません
ホニャララ.com では現在このリクエストを処理できません。


その他いろいろと調べているのですが、初期表示の画面ではル-プを始めず、$placeに値が入って初めて(入力フォ-ムに地名が入力されて、初めて)ル-プが始まるようにしようとすればハ-ドルがぐっと上がる感じになってる気がしてまして。。

2016/05/06 00:45:43
id:a-kuma3 No.2

a-kuma3回答回数4325ベストアンサー獲得回数17732016/05/04 13:08:44ここでベストアンサー

ポイント950pt

こんな感じだと、どうでしょうか。

<?php
    $place = $_POST['place'];
    $args = Array(
        'post_type' => 'post',
        'posts_per_page' => -1,
        'meta_query' => array(array(
            'key' => 'address',
            'value' => $place,
            'compare' => 'LIKE'
        ))
    );
    if ($place) {
        $the_query = new WP_Query($args);
        if ($the_query -> have_posts()) {
            while($the_query -> have_posts()) {
                $the_query -> the_post();
            }
        } else {
            echo "該当する投稿はありませんでした";
        }
    } else {
        echo "住所を指定してください";
    }
?>
他29件のコメントを見る
id:ykhpno1

さっそくコメントをいただきありがとうございます!
できると思う、と言っていただくだけで、この質問をするのがたいへん楽しみです。
a-kuma3さんに挙げていただいた①~④までを満足できればすごく嬉しいですが、④は全て表示されなくとも、表示されるマ-カ-の、だいたい真ん中くらいがマップの中心になる、というだけでも満足です。

サンプルのつぎはぎになるかも、というa-kuma3さんの回答が一番嬉しいかもしれません。
わからないことがあっても、それがサンプルから派生したものであれば追いかけやすいのかもしれないと思っております(笑)。
今までの経緯を全てa-kuma3さんに手掛けていただいておりますので、僕が求めるものに一番近い(もしくはそのものズバリな)答えをいただけると思っておりまして、明日たてる質問にa-kuma3さんに回答いただければ本当に嬉しいです。

2016/07/03 21:06:41
id:ykhpno1

お言葉に甘え、a-kuma3さんに手掛けていただいたコ-ドをぺたっと貼らせていただき、質問させていただきました。
http://q.hatena.ne.jp/1467609469

a-kuma3さんにのみご回答いただければもうそれで私は満足でして、お手すきの折に見てやっていただけませんでしょうか。
なにとぞよろしくお願いします。

2016/07/04 14:26:53

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

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

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

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

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