サポート » その他 » ショートコードの中に変数

  • 解決済 komatterwww

    (@komatterwww)


    『Leaflet Map』という地図プラグインを用いて、一つのマップに複数のピンを立てていくようなウェブサイトを構築中です。

    この『Leaflet Map』というプラグインは、
    マップを表示するのにショートコードを用います。

    しかし、カスタムフィールドで入力した情報を、このショートコード内に埋め込みたいのですがその方法がわかりません。

    以下にサンプルコードを掲載します

    
    <?php
    	$background = the_field('background'); //①に入れたい
    	$lat = the_field('lat'); //②に入れたい
    	$lng = the_field('lng'); //③に入れたい
    	$name = the_field('name'); //④に入れたい
    	$text = the_field('text'); //⑤に入れたい
    	
    	echo do_shortcode('
    		[leaflet-marker svg="true" color="white" iconClass="fa fa-anchor fa-lg" background="①" lat=② lng=③]
    			<a href="#">④</a>
    			<p>⑤</p>
    		[/leaflet-marker]
    	');
    ?>
    

    このような場合どのようにコードを書けばよいのでしょうか。
    本気で困っています。どなたかお助けください。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • ishitaka

    (@ishitaka)

    こんにちは

    the_field() は値を表示する関数です。取得する場合は、get_field() などを使用します。
    do_shortcode() には、そのままショートコードを文字列で指定するので、取得した値をそのまま挿入すればいいかと思います。

    $background = get_field('background'); //①に入れたい
    $lat = get_field('lat'); //②に入れたい
    $lng = get_field('lng'); //③に入れたい
    $name = get_field('name'); //④に入れたい
    $text = get_field('text'); //⑤に入れたい
    
    echo do_shortcode('
    	[leaflet-marker svg="true" color="white" iconClass="fa fa-anchor fa-lg" background=" . $background . " lat=' . $lat . ' lng=' . $lng . ']
    		<a href="#">' . $name . '</a>
    		<p>' . $text . '</p>
    	[/leaflet-marker]
    ');
    komatterwww

    (@komatterwww)

    ご返信ありがとうございます!
    失礼いたしました。
    the_fieldではなくget_fieldでした。
    そして、ご指摘通り以下コードを書いてみましたが動きませんでした。
    原因がさっぱりわかりませんTT

    
    <?php
    	$background = get_field('background');
    	$lat = get_field('lat');
    	$lng = get_field('lng');
    	$name = get_field('name');
    	$text = get_field('text');
    
    	echo do_shortcode('
    		[leaflet-marker svg="true" color="white" iconClass="fa fa-anchor fa-lg" background=" . $background . " lat=' . $lat . ' lng=' . $lng . ']
    			<a href="#">' . $name . '</a>
    			<p>' . $text . '</p>
    		[/leaflet-marker]
    	');
    ?>
    
    ishitaka

    (@ishitaka)

    ご指摘通り以下コードを書いてみましたが動きませんでした。

    どのように動かないのでしょうか?もう少し詳細に教えてもらえませんか?

    また、テンプレートではなく投稿にショートコードを記述した場合(カスタムフィールドの値は固定値を指定して)はどうでしょうか?

    komatterwww

    (@komatterwww)

    ご返信ありがとうございます。

    どのように動かないのでしょうか?もう少し詳細に教えてもらえませんか?

    ピンそのものが表示されません。

    また、テンプレートではなく投稿にショートコードを記述した場合(カスタムフィールドの値は固定値を指定して)はどうでしょうか?

    地図上にピンが表示され、ピンをクリックすると吹き出しが表示され、
    吹き出し内にはaタグとpタグが表示されます。

    ishitaka

    (@ishitaka)

    一点訂正です。

    background=" . $background . "

    background="' . $background . '"

    ですね。なお、提示したコードは例です。理解した上でコピペではなくご自身で記述してください。

    komatterwww

    (@komatterwww)

    すみません><
    プログラミング知識に乏しいものでそのままコードを使ってしまいました。

    ishitaka

    (@ishitaka)

    マルチポストですね。
    https://teratail.com/questions/208537

    とちらでも構いませんがどちらか一方をクローズ(解決済み)してください。

    ishitaka

    (@ishitaka)

    マルチポスト先に回答が付いているようなので、こちらを閉じてください。

    komatterwww

    (@komatterwww)

    すみませんです

    komatterwww

    (@komatterwww)

    すみませんです
    本当に困っていて、質問できるところに片っ端から質問していました。
    閉じさせて頂きます

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