web-dev-qa-db-ja.com

__sテーマを使用してカスタムショートコードが機能しない

カスタムテーマに新しいショートコードを登録しようとしています。

Functions.phpで私は次のように基本的なテスト関数を作成しました

function get_second_image($atts) {
    echo ‘test’;
}

真下に登録

add_shortcode( ‘case_study_second_image_sc’, ‘get_second_image’ );

WYSIWYGエディタを使用して、私はショートコード[case_study_second_image_sc]を挿入しますが、それは単に生のコードとしてページに表示されます。

私はを使ってページコンテンツを呼び出しています

<?php the_content(); ?>

テンプレートファイルで。

他のSE質問からの情報に基づいて、私は自分のテーマのファイルで追加または削除のフィルタ機能を探しましたが、邪魔になるようなものはないようです。

1
S. Coll

必ず引用符を使用してください。 ' または " カーリー引用符ではなく 、 、 または  文字列用です。

また、ショートコードはその出力を返すべきで、エコーはしません。

WordPressがコールバックなしでショートコードを見つけると、ショートコードタグを表示されたとおりに表示します。 [case_study_second_image_sc]

ショートコードタグ‘case_study_second_image_sc’と関連する コールバック‘get_second_image’はPHPによって定数として解析されます。これは、私たちのショートコードに有効なショートコードタグやコールバック関数がなく、WPがショートコードをユーザーが入力したとおりに出力することを意味します。

エラー報告をオンにすると、これらの扱いにくいエラーを見つけるのに役立ちます(コピー/貼り付けコードに中引用符が表示され、一部のエディタでは引用符を区別するのが難しい場合があります)。

Use of undefined constant ‘case_study_second_image_sc’ - assumed '‘case_study_second_image_sc’'

Use of undefined constant ‘get_second_image’ - assumed '‘get_second_image’'
2
Dave Romsey

こちらのドキュメントを参照してください https://codex.wordpress.org/Shortcode_API 。あなたの関数はあなたがショートコードを置き換えたい値を返す必要があります。 'echo'は何も表示しません。あなたはreturn 'test'する必要があります。コンテンツにテキスト 'test'を挿入します。

上記のリンクのドキュメントから(強調を追加):

The_contentが表示されると、ショートコードAPIは「[myshortcode]」などの登録済みショートコードを解析し、属性とコンテンツがある場合はそれらを分離して解析し、対応するショートコードハンドラ関数に渡します。ショートコードハンドラによる戻されたエコーされていない)の文字列は、ショートコード自体の代わりに投稿本文に挿入されます。

お役に立てれば。

0
Rick Hellewell