コーデックスには 例 があり、get_shortcode_regex()を使用して、特定のページでショートコードが呼び出されているかどうかを確認します。
$pattern = get_shortcode_regex();
preg_match('/'.$pattern.'/s', $posts[0]->post_content, $matches);
if (is_array($matches) && $matches[2] == 'YOURSHORTCODE') {
//shortcode is being used
}
ただし、これは投稿コンテンツの最初のショートコードのみを検出します。これはget_shortcode_regex()のバグですか、それともpreg_match()パラメータを微調整して、ページに存在するすべてのショートコードを返すようにすることができますか?
PHP docs (私の強調)から:
preg_match() は、パターンが一致した回数を返します。 preg_match()は最初の一致の後で検索を停止するため、これは0回(一致なし)または1回になります。 preg_match_all() 逆に、件名の最後に到達するまで続行されます。