WordPressで特定のショートコードの存在を判定する方法

ページ内や記事の中に特定のショートコードが存在するかを、if文の条件分岐を用いて調べる方法の備忘録です。

特定のショートコードが使用されている時だけ、特定のスクリプトを読み込んだり、表示を切り替えたりしたい場合に役立ちます。

ショートコードが存在するか調べる方法

WordPressには、ショートコードの有無を判定するためのhas_shortcode()という関数が用意されています。

以下のコードをテンプレートファイル(single.php など)のループ内で使用することで、記事の内容に特定のショートコードが含まれているかをチェックできます。

<?php
  if ( has_shortcode( get_the_content(), 'sample' ) ) {
    echo "ショートコードがあります";
  endif;
?>

if文にhas_shortcode()を設定して、記事の中に特定のショートコードが存在するか判定します。

一つ目の引数には、ショートコードを検索する対象の文字列を設定します。今回は記事内のコンテンツを対象にするget_the_content()を指定しています。

二つ目の引数には、チェックしたいショートコードのタグ名を設定します。

if文の中には、ショートコードが存在した時の処理を記入します。

メインループ以外で判定する場合

メインループの外で投稿データにアクセスする時など、get_the_content()を使用できない場合は、global $postを使用して取得した内容から判定します。

<?php
  global $post;
  if( has_shortcode( $post->post_content, 'sample' ) ){
    echo "ショートコードがあります";
  }
?>

一つ目の引数に$post->post_contentを指定して、ページの本文に特定のショートコードが存在した時に処理を実行します。

Share on
関連記事
Custom Taxonomy Orderでカテゴリーを任意の順番に並び替える方法
Custom Taxonomy Orderでカテゴリーを任意の順番に並び替える方法
WordPressでタグクラウドを設置する方法
WordPressでタグクラウドを設置する方法
Smart Custom Fieldsで作成したフィールドの値を投稿一覧で表示する方法
Smart Custom Fieldsで作成したフィールドの値を投稿一覧で表示する方法