我们如何在插件中使用条件标记?

时间:2016-05-31 作者:Ahmed Kaludi

在插件中,css文件默认加载站点范围,我只想在单个帖子上加载它。

条件标记is\\u single()在插件中不起作用,

你知道我们怎样才能做到吗?

2 个回复
SO网友:bravokeyl

TL,DR;

你很早就上钩了。

在插件中,默认情况下css文件加载整个站点,我只想在单个帖子上加载它。

这是一个非常好的想法,许多开发人员在开发主题/插件时没有考虑到这一点。

is_single() 在插件中不起作用

您在哪里使用is_single 中的模板标记WP run cycle ?

假设你正在initwp

模板标记在template_redirect 行动所以这些标签不适用于initwp.

使用脚本或样式的最佳位置是wp_enqueue_scripts 它在后面运行template_redirect .

你知道我们怎样才能做到吗?

根据我们使用的插件,有很多方法可以实现。

即将加入TablePress 插件。

controllers/controller-frontend.php 插件在样式表中排队的位置。

if ( apply_filters( \'tablepress_use_default_css\', true ) || TablePress::$model_options->get( \'use_custom_css\' ) ) {
    add_action( \'wp_enqueue_scripts\', array( $this, \'enqueue_css\' ) );
}
您可以使用tablepress_use_default_css 自定义css选项为false,然后在自定义插件/主题中的任何需要的地方加载它们。

如果你仔细研究这个文件,就会有很多条件为该插件排队。

您还可以根据需要先按样式出列,然后再按顺序入队。

示例代码

add_action(\'wp_enqueue_scripts\',\'wp_228402_load_styles_conditionally\',11);
function wp_228402_load_styles_conditionally() {
  if(is_single()){
    return; // return if not on the single post/page
  }
  wp_dequeue_style(\'tablepress-default\'); 
}
检查priority 对于以上内容,这是关键,它应该大于默认值10.

SO网友:Steve Clason

在函数中需要这样的内容。php文件:

if( is_single()) {
  wp_enqueue_style( \'ahmedkaludi-style\', get_stylesheet_uri() . \'/css/plugin-styles.css\' );
}
更改“/css/插件样式”。css”到插件样式表的实际路径。

如果插件写得好,wp_enqueue_style 将包装在函数中,如:

if ( ! function_exists( \'my_scripts\' ) ) {
  function my_scripts() {
    wp_enqueue_style( \'ahmedkaludi-style\', get_stylesheet_uri() . \'/css/plugin-styles.css\' );
  }
  add_action( \'wp_enqueue_scripts\', \'steveclason_flat_scripts\' );
}
如果插件就是这样做的,你可以在你的主题函数中用类似的代码块覆盖它。php。如果不了解插件如何调用样式表,我们就无法给出很好的建议——粘贴箱上的代码块会做其他事情。

相关推荐