サポート » 使い方全般 » phpをfunctions.phpに組み込みたい

  • 解決済 ecoonene

    (@ecoonene)


    xmlをphpで取得して整形するコード(1)があります。これをショートコードで動くようにfunctions.phpに記載したいと思っています。

    具体的には、投稿時に[yobidasi file=”福井市”]又は[yobidasi]福井市[/yobidasi]と指定することで、記事内に読み込みたいと思っています。

    (2)のようにコードを書きかけているのですが、知識がないため、ここからどう書けばよいのかわかりません。

    ご教示の程、よろしくお願いいたします。

    (1)

    <?php
    $rss =  'http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?appid=dj0zaiZpPWlWNDNTS2dhOTBVRSZzPWNvbnN1bWVyc2VjcmV0Jng9OGU-&query=福井市';
    $xml = simplexml_load_file($rss);
    $data = get_object_vars($xml);
    echo '<ul>';
    foreach ($data['Feature'] as $item) {
    	echo '<li>' . $item->Name . '<br><DIV style="font-size:xx-small;">'. $item->Property->Address . '</DIV></li>';
    }
    echo '</ul>';
    ?>

    (2)

    function yobidasi_func( $atts ) {
      extract( shortcode_atts( array(
    'file' => ''
      ), $atts ) );
    
      if ($file!='')
    return @file_get_contents('http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?appid=dj0zaiZpPWlWNDNTS2dhOTBVRSZzPWNvbnN1bWVyc2VjcmV0Jng9OGU-&query=' . $file') ;
    }
    add_shortcode( 'yobidasi', 'yobidasi_func' );

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 例えば(1)をfukui.phpで保存して
    (2)を

    function yobidasi_func($params = array()) {
    	extract(shortcode_atts(array(
            'file' => ''
    	), $params));
    	ob_start();
    	include(get_theme_root() . '/' . get_template() . "/$file.php");
    	return ob_get_clean();
    }
    add_shortcode('yobidasi', 'yobidasi_func');

    のようにして
    [yobidasi file=’fukui’]を本文に書けば呼び出せるはずです。
    (1)の文字コードを適切なものにするのをお忘れなく。

    早速のお返事ありがとうございます。
    すいません、質問の仕方が言葉足らずで、かつ、要領を得ないもので申し訳ありませんでした。

    実現したいのは、投稿時に[yobidasi]〇〇市[/yobidasi]でキーワードを指定して、(1)の「福井市」の部分に代入し、「echo」部分のようにhtmlへと整形して情報を表示してみたいのです。こうして、800ほどある全国の市の情報を投稿できないものかと考えております。

    何度もお手数をおかけして申し訳ありませんが、御教示くださると幸いです。

    shortcode についてだけ。

    Shortcode API(日本語訳はリンクをたどってください)

    を見ると、ecoonene さんのやりたいことが出てきますよ。途中が複雑な文字列になると、WordPress は閉じタグの判定に失敗することがあるので、自分で正規表現を書く必要が出てきますが、都市の名前だけだったら問題ないと思います。

    お返事ありがとうございます。早速リンク先を見てみましたが、知識が乏しいため、どのように記述すれば求めているものになるのかわかりませんでした。具体的なコードで教えていただければ助かります。

    ほとんどコピー&ペーストでいけると思ったのですが… 難しいですね。

    サンプルです。Codex 風にしました。

    function get_city_data($atts, $content = null) {
        $rss = sprintf('yahoo_api_address&query=%s', $content);
        $xml = simplexml_load_file($rss);
        $ret_val = '';
        foreach ($xml->Feature as $feature) {
            // ここでマークアップをして、表示をコントロールしてください
            $ret_val .= $feature->Name . ': ' . $feature->Property->Address . '<br />';
        }
        return $ret_val;
    }
    add_shortcode('yobidashi', 'get_city_data');

    知識のない素人の質問に答えていただき、ありがとうございました。思っていた通りのものが表示されました。心から感謝しております。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「phpをfunctions.phpに組み込みたい」には新たに返信することはできません。