サポート » 使い方全般 » プラグインの戻り値をテーマの複数の場所で使うには?

  • 解決済 crus

    (@crus)


    現在、プラグインを作成しショートコードで呼び出しています。

    function test_function($a){
      extract(shortcode_atts(array(
            'b' => 0,
        ), $a));
     //TwitterやAmazonなど外部サービスにAPI接続する処理
     if(!$b){
      echo $foo; //サイドバーからの呼び出し
     }
     else{
      echo $bar; //投稿本文からの呼び出し
     }
    }
    add_shortcode('test', 'test_function');
    add_filter('widget_text', 'do_shortcode');

    上記のようなプラグインを用いて
    サイドバーウィジェット[test b=0]と投稿部分にて[test b=1]と記載する事で正常に動作しています。
    しかしながら、この場合実質2回APIリソースを消費している為
    これを1回のみにしたいのですがどのようにすれば良いでしょうか?

    上記functionの戻り値をreturnで受け取り
    テーマ内のどこかで
    <?php $hoge = do_shortcode('[test]'); ?>
    として、sidebar.phpとsingle.phpで
    global $hoge
    のようにしても期待した出力が得られませんでした。

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

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    まず、ショートコードは echo するものではなく、return するものです。
    そのようにすれば、global 変数での受け渡しも可能となるはずです。(global 宣言は取得と表示の両方で必要になり場合があります。)

    > jim912 さん
    ご返答ありがとうございます。
    下記の方法で期待通りの表示がされましたのでお伝えします。

    仰る通り、上記のショートコードをechoではなくreturnに修正しました。
    そして、sidebar.php内で

    global $hoge;
    $hoge = do_shortcode('[test]');
    echo $hoge;

    同様に、single.php内で

    global $hoge;
    echo $hoge;

    ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「プラグインの戻り値をテーマの複数の場所で使うには?」には新たに返信することはできません。