加载DO_Shortcode的脚本(‘[My_ShortCode]’)

时间:2017-01-29 作者:sayful

我只想为特定的短代码加载一些脚本和样式。我用过

if ( is_a( $post, \'WP_Post\' ) && has_shortcode( $post->post_content, \'my_shortcode\') ) {}
当我把我的短代码放在页面上时,它是有效的,但当我把我的短代码放在页面模板中时,它不起作用。就像下面的index.php 文件:

echo do_shortcode( \' [ my_shortcode ] \' );
有没有办法加载脚本[ my_shortcode ] 在里面do_shortcode(\' [ my_shortcode ] \') 不检查页面模板。

2 个回复
SO网友:Nathan Johnson

将筛选器添加到pre_do_shortcode_tag 并检查$标记是否与您的shortcode标记相同。如果是,请在页脚中将脚本排队。

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 );

SO网友:Maqk

我认为有一种更好的方法来排队或加载脚本,首先将脚本或样式注册到wp_register_stylewp_register_script.

注册后,可以在需要时加载脚本/样式。例如,使用wp\\u enqueue\\u样式(“your\\u样式”)和wp\\u enqueue\\u脚本(“your\\u脚本”)渲染短代码时。

Example

[my_shortcode other parameters]
在需要时通过注册和排队为脚本添加操作。

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\' );
您的快捷码函数

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\' );
希望这能回答你的问题。如果有帮助,请告诉我。

相关推荐

Shortcode is not working

通过阅读教程,我创建了一个简单的快捷代码:<?php /* Plugin Name: GT NoTranslate Shortcode Description: Shortcode to wrap a span with the \"notranslate\" span around text. Version: 0.1 BETA Author: Andrew Truckle Author URI: http://www.trucklesoft.co.