knowledge base

マークアップ/フロントエンドエンジニアのWEB制作における備忘録です。平日はWEB屋、休日は社会人劇団の主宰・劇作家をしています。

ショートコードいろいろ

ショートコードはthe_content() 呼び出し時に実行される

ショートコードはthe_content() を呼び出したときのみ、実行されます。

たとえばget_the_content() 実行時など、ショートコードは実行されず[ショートコード名]という文字列のまま返ってきます。

このようなときは、返ってきた文字列にたいしてdo_shortcode()を使えば解決できます。

$content = get_the_content();
do_shortcode($content);

こうすることで、ショートコードが実行されたソースが出力されます。

テンプレート内でもショートコードを実行したい

たとえばTwitterのリンクを出力するショートコードを作ったとします。

function twitter_account(){
    return '<a href="Twitterアカウントのリンク">アカウント名</a>';
}
add_shortcode('show_twitter', 'twitter_account');

これをテンプレート用PHPでも使用したい場合も、do_shortcode()を使います。

<?php echo do_shortcode('[show_twitter]'); ?>

囲み型のショートコードの場合は次のようにすればOKです。

function RSS_link_func($atts, $content=null){
    extract(shortcode_atts(array(),$atts));
    $link = Twitterアカウントのリンク;
    return '<a href="'.$link.'">'. $content . '</a>';
}
add_shortcode('RSS_link', 'RSS_link_func');

これをテンプレート内で実行するには

<?php echo do_shortcode('[show_twitter]アカウント名[/show_twitter]'); ?>