我正在开发我的第一个WordPress插件。该插件基本上创建了一些短代码来实现一些效果。为了只在需要的页面上包含所有css和js文件,我将我的wp\\u enqueue\\u*函数调用设置为在激活短代码时调用。这可能不是一个非常清晰的描述,因此以下是与我所说内容相关的代码片段:
add_shortcode( \'slider_space\', \'f_slider_space\');
function link_page_files(){
wp_enqueue_style( \'cccslider-style\', plugins_url("...") );
wp_enqueue_script( \'jquery\' );
wp_enqueue_script( \'jquery.easing\', plugins_url("..."), array(\'jquery\') );
wp_enqueue_script( \'scrollcontrol\', plugins_url("...") );
wp_enqueue_script( \'cccslider\', plugins_url("..."), array(\'jquery.easing\', \'scrollcontrol\') );
}
function f_slider_space($atts, $content = null){
link_page_files();
// ..........
}
这似乎奏效了,但我想知道这是否是最佳做法。控制文件包含在哪些页面中的最佳解决方案是什么?
最合适的回答,由SO网友:fuxia 整理而成
这将把样式表链接打印到页脚中。适用于大多数浏览器,但HTML无效。你应该参与行动wp_head
相反,请检查帖子内容中的短代码。使用优先级0
在操作之前运行wp_enqueue_scripts
.
add_action( \'wp_head\', \'shortcode_check\', 0 );
function shortcode_check() {
global $wp_query;
if ( empty ( $wp_query ) or empty ( $wp_query->posts ) )
return;
foreach ( $wp_query->posts as $post )
{
if ( FALSE !== stripos( $post->post_content, \'[shortcodename\' ) )
return add_action( \'wp_enqueue_scripts\', \'shortcode_enqueue\' );
}
}
function shortcode_enqueue() {
// enqueue scripts and stylesheets here
}