サポート » 使い方全般 » 経度緯度をショートコードで指定して、最寄駅を表示したい

  • 解決済 ecoonene

    (@ecoonene)


    経度緯度をショートコードで指定して、最寄駅を表示したいと思っています。
    下記のコードで、例えば、[eki]x=135.0&y=35.0[/eki]と指定しても、うまく表示されずに悩んでおります。
    どこを修正すればいいのか、ご教示いただけると幸いです。

    function get_eki_data($atts, $content = null) {
        $rss = sprintf('http://express.heartrails.com/api/xml?method=getStations&%s', $content);
        $xml = simplexml_load_file($rss);
        $ret_val = '';
        foreach ($xml->station as $station) {
            $ret_val .= '<li><div style="font-size:x-small;">' . $station->name . '<br></div><div style="font-size:xx-small;"> ' . $station->line .'</div></li>';
        }
    if (strlen($ret_val)) {
        return $ret_val;
    } else {
        return '<div style="font-size:x-small;">調べましたが、該当するものがありませんでした。</div>';
        }
    }
    add_shortcode('eki', 'get_eki_data');

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こちらの環境で試すと下記のような感じでちゃんと表示されているようです(見難いので改行をいれています)。

    <li><div style="font-size:x-small;">日本へそ公園<br></div><div style="font-size:xx-small;"> JR加古川線</div></li>
    <li><div style="font-size:x-small;">比延<br></div><div style="font-size:xx-small;"> JR加古川線</div></li>
    <li><div style="font-size:x-small;">黒田庄<br></div><div style="font-size:xx-small;"> JR加古川線</div></li>

    li要素で出力しているのにそれを囲むul要素が無いのは気になりますが、「うまく表示されない」というのは具体的にどういう状況なのでしょうか?

    トピック投稿者 ecoonene

    (@ecoonene)

    早速のお返事ありがとうございます。

    ちゃんと表示されているのですね。なぜなんでしょう。

    直接URLを
    http://express.heartrails.com/api/xml?method=getStations&x=135.0&y=35.0
    と打ち込むとxmlファイルが表示されています。コードを書き込むと、「調べましたが、該当するものがありませんでした。」が表示されます。

    実際にどのようなURLでアクセスしているのか、どのようなデータが返ってきているのか、$rss と $xml を var_damp するなりして確認したほうが良いかもしれませんね。

    トピック投稿者 ecoonene

    (@ecoonene)

    やっと原因がわかりました。

    「x=135.0&y=35.0」の部分が「x=135.0&y=35.0」と自動的に変換されているのが原因でした。これをreplaceすると、ちゃんと表示されました。

    アドバイスありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「経度緯度をショートコードで指定して、最寄駅を表示したい」には新たに返信することはできません。