it-swarm.com.de

shortcode funktioniert nicht in Homepage-Seitenvorlage (benutzerdefinierte Startseite)

Der Shortcode des MailChimp-Anmeldeformulars auf der benutzerdefinierten Homepage des Themas funktioniert nicht, aber wenn ich den gleichen Shortcode auf der Blog-Seite und auf anderen Seiten platziere, funktioniert er auch

Ich habe [mc4wp_form id="id"] diesen Shortcode in Themenseiten eingefügt, dann funktioniert er

und ich habe <?php echo do_shortcode ([mc4wp_form id="id"]); ?> diesen Shortcode in die benutzerdefinierte Homepage eingefügt und es funktioniert nicht.

vielen Dank

1

Die übliche Vorgehensweise ist do_shortcode (). Dies ist jedoch keine effiziente Methode, da eine ziemlich umfangreiche Regex (regulärer Ausdruck) ausgeführt werden muss, um jeden einzelnen Shortcode in Ihrer WP -Installation zu analysieren, um zu dem gewünschten zu gelangen. Siehe diesen Beitrag für eine gründlichere Erklärung .

Ein besserer Ansatz besteht darin, die erforderliche Rückruffunktion direkt auszuführen. Aber das kann manchmal eine Herausforderung sein - entweder muss man viel Code durchforsten, um ihn zu finden, oder es kann sich möglicherweise um eine Objektklasse handeln, und wie nennt man das?

J.D. Grimes hat eine gute Utility-Funktion bereitgestellt zum Aufrufen von Shortcodes auf diese Weise, sodass Sie zur direkten Rückruffunktion gelangen, ohne do_shortcode () verwenden zu müssen. Fügen Sie die folgende Funktion hinzu, die Sie für jede Shortcode-Instanz verwenden können:

/**
 * 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 );
}

Dann können Sie Ihren Shortcode folgendermaßen aufrufen:

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

In der Funktion do_shortcode() fehlen Anführungszeichen um den Shortcode:

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

do_shortcode() ist eine PHP Funktion , die einen String als Argument verwendet. Die Anführungszeichen sind erforderlich, um den Text zu einer Zeichenfolge zu machen.

0
Jacob Peattie