質問: ショートコードがページで呼び出されているかどうかを検出する方法 いくつかの変数をgoogleアナリティクスにプッシュしようとしていますが、ショートコードがページに含まれているかどうかを検出できるようにしたいと考えています。誰もがこれについてうまくいく方法を知っていますか?ありがとうございました!ノエル
回答: 私は時々同じことを不思議に思っていました - wpが保存時にチェックしてレジスタなどを保存しているかどうかコードをちょっと見てみましたが、そうではないようです。しかしグローバルな$shortcode_tagsがあり、wpはこの機能を持っていますfunction get_shortcode_regex() { global $shortcode_tags; $tagnames = array_keys($shortcode_tags); $tagregexp = join( '|', array_map('preg_quote', $tagnames) ); // warning! do not change this regex without changing do_shortcode_tag() and strip_shortcodes() return '(.?)\('.$tagregexp.')\b(.*?)(?:(\/))?\\[\/\2\])?(.?)'; } ショートコードを適用するためにここで使用されます。$pattern = get_shortcode_regex(); return preg_replace_callback('/'.$pattern.'/s', 'do_shortcode_tag', $content); 私の正規表現はそれほど素晴らしいものではありませんが、それを使って何かできるかもしれません。あるいは:それからブルートフォースの方法があります - それぞれのショートコードタグについて、'['.$tagが内容に含まれているかどうかを '単に'チェックしますか?しかし、その後、一部の開発者や古いプラグインは、コメントや他のカスタムタグを使って、コンテンツに対して独自のファンキーなフィルタをかけます。そのため、$wp_filterのwpグローバル$wp_filter['the_content']を確認することもできます。内容は「内容」のために呼び出された関数であるべきです。賢いことにあなたはたぶん自分自身でpost save/updateにアクションを追加し、その後フィルターとショートコードのチェックをして何かをpost-metaに保存することができます。それから表示時にしなければならないのはpost-metaをチェックすることだけです。うーん...それは価値がある?