web-dev-qa-db-ja.com

ホームページページテンプレート(カスタムフロントページ)でショートコードが機能しない

テーマのカスタムホームページのMailChimp購読フォームのショートコードが機能しない

私は[mc4wp_form id="id"]このショートコードをテーマページに入れて、それから動いています

そして私は<?php echo do_shortcode ([mc4wp_form id="id"]); ?>このショートコードをカスタムホームページに入れましたがそれが機能しません..

ありがとう

1

これにアプローチする一般的な方法はdo_shortcode()を使用することです。しかし、これは効率的な方法ではありません。WPインストール内のすべてのショートコードを解析して目的のものにアクセスするには、かなり広範な正規表現(正規表現)を実行する必要があるためです。 より徹底的な説明についてはこの投稿を参照してください

より良い方法は、必要なコールバック関数を直接実行することです。しかしそれは時々挑戦することができます - あなたはそれを見つけるためにたくさんのコードを掘り下げなければならないか、あるいはそれはおそらくオブジェクトクラスの中にあるかもしれません、そしてあなたはそれをどのように呼びますか?

J.D. Grimesは、このようにショートコードを呼び出すための優れたユーティリティ関数 を提供しているので、do_shortcode()を使用しなくてもダイレクトコールバック関数にアクセスできます。以下の関数を追加します。これは、任意のショートコードインスタンスに使用できます。

/**
 * Call a shortcode function by tag name.
 *
 * @author J.D. Grimes
 * @link https://codesymphony.co/dont-do_shortcode/
 *
 * @param string $tag     The shortcode whose function to call.
 * @param array  $atts    The attributes to pass to the shortcode function. Optional.
 * @param array  $content The shortcode's content. Default is null (none).
 *
 * @return string|bool False on failure, the result of the shortcode on success.
 */
function do_shortcode_func( $tag, array $atts = array(), $content = null ) {

    global $shortcode_tags;

    if ( ! isset( $shortcode_tags[ $tag ] ) )
        return false;

    return call_user_func( $shortcode_tags[ $tag ], $atts, $content, $tag );
}

そうすれば、あなたのショートコードを次のようにして呼び出すことができます。

echo do_shortcode_func( 'mc4wp_form', array( 'id' => 'id' ) );
1
butlerblog

do_shortcode()関数のショートコードを囲む引用符がありません。

<?php echo do_shortcode( '[mc4wp_form id="id"]' ); ?>

do_shortcode()はPHP function で、 String引数として取ります 。引用符は、テキストを文字列にするために必要です。

0
Jacob Peattie