サポート » WordPress への貢献と参加 » PHP 記述方法について

  • 解決済 mij270119

    (@mij270119)



    皆様

    お世話になります。

    新たなプロモーションを実施するにあたって、取引先TKコードを弊社システムに埋め込んでいます。
    function.phpから外部の<script>タグを挿入、src属性内のURIのユニーク値部分にショートコードを埋めて出そうと試みていますが、何度やっても、ショートコードがURIの文字列の一部として認識されてしまい、ユニーク値が生成されません。(ショートコード名が固定値としてHTML上に表示されます。)

    add_action(‘wp_footer’, ‘add_original_script_a’);
    function add_original_script_a() {
    if (is_page(‘3456’)){ $add_original_script_a = <<<EOM
    <script src=”https://TKコードadid=15856&u1=[unique_id]”></script>
    EOM;
    echo $add_original_script_a;
    }
    }

    投稿ページ上にそのままショートコードを入力すれば、HTML上でユニーク値が表示されます。
    [unique_id]

    そこで前述の<script>タグ内のURI、ユニーク値を指定する部分に<? php echo do_shortcode(”);?>を挿入しましたが、同様にphpの記述も含めてURI文字列の一部としてphpの記述も含めて認識されてしまいます。

    add_action(‘wp_footer’, ‘add_original_script_a’);
    function add_original_script_a() {
    if (is_page(‘3456’)){ $add_original_script_a = <<<EOM
    <script src=”https://TKコードadid=15856&u1=<? php echo do_shortcode(‘[unique_id]’);?>”></script>
    EOM;
    echo $add_original_script_a;
    }
    }

    以上となります。
    どなたか知恵をお借りできないでしょうか。
    どうぞ宜しくお願い致します。

    重松

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • munyagu

    (@munyagu)

    こんにちは

    不要なスペースが入っているんじゃないでしょうか。

    <? php echo

    <?php echo

    ishitaka

    (@ishitaka)

    こんにちは

    ヒアドキュメントは文字列なので PHP タグは有効ではありません。
    unique_id ショートコードが何を返すのか不明ですが、下記のようにしてみてはどうでしょうか?

    	$unique_id = do_shortcode( '[unique_id]' );
    if ( is_page( '3456' ) ) {
    	$add_original_script_a = <<<EOM
    <script src="https://TKコードadid=15856&u1={$unique_id}"></script>
    EOM;
    ishitaka

    (@ishitaka)

    なお、このフォーラムでコードを貼り付ける場合は、コードを選択し [code] ボタンをクリック(逆クォートで囲む)してください。
    詳細は下記ページを参照してください。
    https://wpdocs.osdn.jp/フォーラムへようこそ#.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E6.8A.95.E7.A8.BF

    mij270119

    (@mij270119)

    @munyagu様
    初めまして。

    この度はご回答いただきありがとうございます。
    こちら修正しましたが、改善しませんでした。

    ご協力いただいたにも関わらず、良いご報告ができずすみません。
    今後、記述を行う際の参考にさせていただければ幸いです。

    引き続きどうぞ宜しくお願い致します。

    重松

    mij270119

    (@mij270119)

    @ishitaka様
    初めまして。

    まずはコード貼り付けの件、大変失礼いたしました。
    今後はルールを守って投稿いたします。

    ご回答いただきました変数を都合上{$unique_id_a}と変換して試した結果、
    HTML上にユニーク値が表示されました!
    感動です。

    しかしながら、なぜか以下のようにscriptタグ外直前に表示されます。
    PT15422612413023<script src="https://TKコードadid=15856&u1="></script>

    これでは取引先のu1に対してユニーク値が返されません。
    そこで以下のようにショートコードを作成してみましたが

    function  add_original_script_a() {
        $unique_id = do_shortcode('[unique_id]');
        return '<script src="https://TKコードadid=15856&u1={$unique_id}"></script>';
    }
    add_shortcode('unique_id_a', 'add_original_script_a');

    とし、[unique_id_a]を編集ページに挿入しても解決しませんでした。

    ご対応いただいたことで、解決に1歩近付きました。
    引き続き、どうぞ宜しくお願い致します。

    重松

    • この返信は4 週間前に  mij270119 さんが編集しました。理由: 記載内容が事実と相違していたため修正しました。
    ishitaka

    (@ishitaka)

    たぶん、unique_id ショートコードのコールバック関数が間違えていると思います。
    コールバック関数のなかで echo (または print) していませんか?

    間違った例:

    function footag_func( $atts ) {
    	echo "foo = {$atts['foo']}";
    }
    add_shortcode( 'footag', 'footag_func' );


    正しい例:

    function footag_func( $atts ) {
    	return "foo = {$atts['foo']}";
    }
    add_shortcode( 'footag', 'footag_func' );
    mij270119

    (@mij270119)

    @ishitaka

    お世話になっております。

    ご指摘の点を修正し、解決いたしました。
    この度は的確かつ迅速にご回答いただきありがとうございました。

    1週間ほど前に全くの無知識から取り組み始めたため
    コールバック関数やヒアドキュメントのルールについて全く把握しておりませんでした。
    完全に煮詰まってこちらに投稿しましたが、投稿して本当に良かったです。

    改めまして、感謝申し上げます。
    今後も関わる機会がございましたら、是非よろしくお願い致します。

    重松

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • このトピックに返信するにはログインが必要です。