囲み型のショートコードのなかにショートコードを書いてみる:【48日目】WordPress1日1プラグイン

ようこそのお運びで、厚く御礼申し上げます。
48日目です。囲み型のショートコードの続きです。その中にショートコードを書いてみます。

囲み型のショートコードのなかにショートコードを書いて、両方とも実行してみる

囲み型のショートコードAのなかに、ショートコードBを書いて、A,Bともに実行する

まず、ショートコードの入れ子を作ります。
140307-0003

両方のショートコードが実行され、表示側にはこう表示されます。
140307-0004

「囲み型ショートコード」の関数で再帰的にショートコードを実行

囲み型ショートコードとは以下のような状態のことをいいます。

[ショートコード名A]はじめてのしょーとこーど[/ショートコード名A]

今回は、挟み込んだこの文字列の中にショートコードを記入して

[ショートコード名A]はじめてのしょーとこーど[ショートコード名B][/ショートコード名A]

という状態にします。

まずは、function.phpに書いてみます。

では、function.phpに以下のコードを書きました。今回は2種類のコードを用意します。

まず、「はじめてショートコード・・・」で作ったショートコード[jugem]

function jugemStr($atts) {
    $str =<<<EOS
      {$count}じゅげむ じゅげむ ごこうのすりきれ かいじゃりすいぎょの すいぎょうまつ うんらいまつ ふうらいまつ くうねるところにすむところ やぶらこうじのぶらこうじ ぱいぽ ぱいぽ ぱいぽのしゅーりんがん しゅーりんがんのぐーりんだい ぐーりんだいのぽんぽこぴーの ぽんぽこなーの ちょうきゅうめいのちょうすけ
EOS;
    return $str;
}
add_shortcode('jugem', 'jugemStr');

そして、前回作った囲み型ショートコード(一部変更)

//##########################
function strColorRedH3( $atts, $content = null ) {
    //$contentのなかにあるショートコードを「do_shortcode」で実行
    $str = do_shortcode($content);

    //装飾処理
    $val =<<<EOS
       <h3 style="color:red">{$str}</h3>
EOS;
    return $val;
}
add_shortcode('mite', 'strColorRedH3');

この二つのコードを使います。

ポイントはどこ?

[jugem]のショートコードの説明は、前々回したのと同じなので省略します。

  • ショートコード用の関数を作成
    第1引数
    には$attsには属性の配列がはいります第2引数の$contentには、囲まれた文字列が入ります。(※引数は順番が大事。)

    function strColorRedH3( $atts, $content = null ) {
        //$contentのなかにあるショートコードを「do_shortcode」で実行
        $str = do_shortcode($content);
    
        //装飾処理
        $val =<<<EOS
           <h3 style="color:red">{$str}</h3>
    EOS;
        return $val;
    }
  • 今回は、$content(囲まれた文字列)内のショートコードを実行します。その場合は「do_shortcode()」関数を再帰的に実行します。

    $str = do_shortcode($content);
    
  • add_shortcodeをつかって、呼び出すショートコード名と呼び出す関数を設定する。
    add_shortcode(‘ショートコード名’,’呼び出す関数’);

    add_shortcode('mite', 'strColorRedH3');
    
  • 後は記事の本文など、表示したい部分に記事本文内に”囲み型”のショートコードを記入します。
    (記事本文内)
    [mite]ここをみて!!==>[jugem][/mite]
    

    またテンプレートでもdo_shortcodeをつかって、ショートコードを記入することができます

    <?php
    echo do_shortcode('[mite]ここをみて!!==>[jugem][/mite]');
     ?>
    

コードをプラグイン用のファイルにします

それではfunction.phpに書いたコードを消して、
paka3_shortCodeSecond.php」というファイルを作成し、以下のコードを記入します(前回の修正)。

このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
※前回のコードを内部ショートコードを実行可能にしたプログラムです。

今回のまとめ

なんとなくショートコードを理解していたつもりでしたが、意外と使い方に幅があることに驚きました。使い勝手はよさそうですね。

wordpress1日1プラグイン

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です