apply_shortcodes()
は、WordPress 5.4 以降に登場した関数で、投稿やページだけでなく、任意の文字列内のショートコードを解析・展開するために使用します。
do_shortcode()
と機能は同じですが、より命名が直感的であり、今後は apply_shortcodes()
の使用が推奨されています。
目次
機能の説明
このテンプレートタグは、文字列内のショートコードをパースして、その出力に置き換える関数です。通常の投稿本文以外の場所、例えばウィジェット、カスタムフィールド、オプションなどでもショートコードを機能させたいときに使います。¥
シンプルなコード例
echo apply_shortcodes( 'この中に [shortcode] が含まれています。' );
[shortcode]
に対応するショートコード関数が登録されていれば、その出力に変換されて表示されます。
使い方の説明
基本構文
apply_shortcodes( string $content ): string
引数
引数 | 説明 |
---|---|
$content | ショートコードを含む文字列 |
使用例
add_shortcode( 'hello', function() {
return 'こんにちは、世界!';
} );
$text = '挨拶:[hello]';
echo apply_shortcodes( $text );
// 結果: 挨拶:こんにちは、世界!
一緒に使うことが多い関連タグ
add_shortcode()
add_shortcode( 'current_year', function() {
return date('Y');
} );
- 任意のショートコードを登録するための関数
apply_shortcodes()
とセットで使うことで、動的なテキストを生成できる
do_shortcode()
echo do_shortcode( '[current_year]' );
- 機能的には
apply_shortcodes()
と同等 do_shortcode()
は旧来の関数だが、現在も使用可能- 新しいテーマやプラグインでは
apply_shortcodes()
の方が推奨される
shortcode_exists()
if ( shortcode_exists( 'hello' ) ) {
echo apply_shortcodes( '[hello]' );
}
- ショートコードが登録されているかをチェック
- フロントエンドでのエラー防止に役立つ
追加情報で取得したい場合
do_shortcode()
との比較
// 旧方式
echo do_shortcode( '[shortcode]' );
// 新方式(推奨)
echo apply_shortcodes( '[shortcode]' );
- 機能は全く同じ
- 命名がわかりやすい
apply_shortcodes()
を推奨
カスタムフィールドにショートコードを適用したい場合
$content = get_post_meta( get_the_ID(), 'custom_field', true );
echo apply_shortcodes( $content );
ショートコードを保存したカスタムフィールドなどにも展開可能
このテンプレートタグを利用してのカスタマイズ
ウィジェットタイトルや説明にショートコードを反映
$widget_title = get_option( 'custom_widget_title' );
echo apply_shortcodes( $widget_title );
ACF などのプラグインと連携
$text = get_field( 'text_with_shortcode' );
echo apply_shortcodes( $text );
ショートコードを含むテキストを保存している項目にも応用可
想定されるトラブル
ショートコードが実行されない
apply_shortcodes()
を使っても出力がそのまま [shortcode]
のように表示される。
解決方法
add_shortcode()
によるショートコードの登録が正しくできているか、または shortcode_exists()
で存在チェックをする。
HTML内でうまく展開されない
解決方法:
ショートコードの出力内容が HTML を含む場合、フィルタフックや出力エスケープとの兼ね合いを調整する必要があります。wp_kses_post()
などが適用されていないか確認。
Q&A
まとめ
apply_shortcodes()
は 文字列中のショートコードを展開するための新しい関数do_shortcode()
と同様の働きをしつつ、命名が明確で今後の標準に- 任意の文字列(カスタムフィールド、オプション、ウィジェットなど)にも使える
add_shortcode()
やshortcode_exists()
などと組み合わせるとさらに便利- トラブル回避のため、ショートコード登録状況のチェックを事前に行うと安心
コメント