我正在使用WP 4.3并且我创建了一个插件,该插件仅在我有短代码[my_sc]
的单个页面中使用。
我试过这样想:
add_action('init', 'my_enqu_script');
function my_enqu_script(){
global $post;
$content = $post->post_content;
if(has_shortcode($content, 'my_sc')){
wp_register_script(......);
wp_localize_script(......);
wp_enqueue_script('jQuery');
wp_enqueue_script('my_script');
}
function my_func(){
//do something
}
add_shortcode('my_sc', 'my_func');
}
不幸的是,(has_shortcode)不起作用。任何的想法?
答案 0 :(得分:1)
您不应该在add_shortcode()
函数中包装my_enqu_script()
位。而是添加短代码,然后将另一个函数挂钩到适当的钩子中:
function my_func(){
//do something
}
add_shortcode('my_sc', 'my_func');
function my_enqu_script(){
global $post;
$content = $post->post_content;
if ( has_shortcode($content, 'my_sc') ) {
wp_register_script(......);
wp_localize_script(......);
wp_enqueue_script('jQuery');
wp_enqueue_script('my_script');
}
}
add_action('wp_enqueue_scripts', 'my_enqu_script');
您还应该考虑使用wp_enqueue_scripts
操作挂钩,而不是init
,因为init
对于global $post;
来说还为时过早。
答案 1 :(得分:0)
您只需要创建函数并调用函数add_shortcode()
。
e.g。
Tree
您还使用function my_function(){
echo 'Test';
}
add_shortcode('my_sc', 'my_function');
代替:
,这可能导致失败。
您应该将其添加到;
文件或创建单独的文件(最佳做法)和functions.php
。