Skripte für do_shortcode laden (”)

Ich möchte einige Skripte und Stil nur für einen bestimmten Shortcode laden. ich benutzte

if ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'my_shortcode') ) {} 

Es funktioniert, wenn ich meinen Shortcode auf der Seite eingebe, aber es funktioniert nicht, wenn ich meinen Shortcode in die Seitenvorlage einfüge. Wie der folgende in index.php Datei:

 echo do_shortcode( ' [ my_shortcode ] ' ); 

Gibt es eine Möglichkeit, Skripte für [my_shortcode] in do_shortcode (‘[my_shortcode]’) zu laden, ohne die Seitenvorlage zu überprüfen.

Solutions Collecting From Web of "Skripte für do_shortcode laden (”)"

Fügen Sie pre_do_shortcode_tag einen Filter pre_do_shortcode_tag und überprüfen Sie, ob $ tag mit Ihrem Shortcode-Tag pre_do_shortcode_tag . Wenn dies der Fall ist, fügen Sie ein Skript in die Fußzeile ein.

 add_filter( 'pre_do_shortcode_tag', function( $a, $tag, $attr, $m ) { if( 'my_shortcode_tag' === $tag ) { wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer = true ); } return $a; }, 10, 4 ); 

Ich denke, es gibt eine bessere Möglichkeit, Ihre Skripte einzubinden oder zu laden, indem Sie zuerst das Skript oder die Stile mit wp_register_style und wp_register_script .

Nach der Registrierung können Sie das Skript / Stil bei Bedarf laden. Zum Beispiel, wenn Sie einen Shortcode mit wp_enqueue_style (“your_style”) und wp_enqueue_script (“your_script”) rendern.

Beispiel

 [my_shortcode other parameters] 

Fügen Sie eine Aktion für das Skript hinzu, indem Sie sich bei Bedarf registrieren und in die Warteschlange einreihen.

 function prefix_my_shortcode_wp_enqueue_scripts() { wp_register_script( 'my-shortcode-script', plugins_url( 'path/myscript.css' ) ); } add_action( 'wp_enqueue_scripts', 'prefix_my_shortcode_wp_enqueue_scripts' ); 

Ihre Kurzwahlfunktion

 function prefix_function_my_shortcode( $attributes ) { extract( shortcode_atts( // your shortcode array args )); wp_enqueue_script( 'my-shortcode-script' ); return 'your shortcode output; } add_shortcode( 'my_shortcode', 'prefix_function_my_shortcode' ); 

Hoffe das beantwortet deine Frage. Lass es mich wissen, wenn das hilft.