将主题样式表排出队列,但保留自定义页面模板上的微件样式

时间:2018-07-29 作者:scopeak

有点不寻常。我创建了一个插件,它只会显示自定义页面模板上的内容。因此,我通过$wp_styles 并仅加载到此页面模板的插件csscustom-template.php - <这是为了减少不同主题和性能的风格冲突,因为这是不需要的

我在自定义页面模板上添加了widget支持,但问题是所有样式都已退出队列,而widget未设置样式。

有没有办法删除主题的所有样式表,但保留小部件/插件样式表?请注意,该插件将用于各种不同的主题,因此我们无法假设主题样式表“句柄”将被调用。

global $wp_styles;
if ( is_page_template( \'custom-template.php\' ) ) {    
     // get all styles data
        global $wp_styles;

        // create an array of stylesheet "handles" to allow to remain
        $styles_to_keep = array("wp-admin", "admin-bar", "dashicons", "open-sans");

        // loop over all of the registered scripts
        foreach ($wp_styles->registered as $handle => $data)
        {
            // if we want to keep it, skip it
            if ( in_array($handle, $styles_to_keep) ) continue;

            // otherwise remove it
            wp_deregister_style($handle);
            wp_dequeue_style($handle);
        }
     //Now add the plugin stylesheet
     wp_enqueue_style( $this->custom_style, plugin_dir_url( __FILE__ ) . \'css/plugin-public.css\', array(), $this->version, \'all\', 9999 );
}

1 个回复
SO网友:Tom J Nowell

假设您的小部件有单独的样式表,那么您必须在将所有其他项目出列的同时将它们入列。

您不能有选择地将样式表的子部分排队,也没有方法识别哪些样式表包含小部件。根据主题,小部件可能不在自己的样式表中,甚至不在单个样式表中

您几乎肯定需要手动查找小部件CSS规则并将其复制到单独的样式表中。

那么,你能手工完成这项工作来完成特定的主题吗?Yes!

你能用一种通用的方式来处理每一个主题吗?No

结束

相关推荐

自定义CSS规则在主题中被覆盖

我安装了一个WP主题(Make, 虽然这对问题来说并不重要),我通过主题选项将标题栏文本设置为黑色。我想使标题栏菜单中的一个特定项具有不同的颜色(突出显示),因此我向该菜单项添加了一个名为“appt nav”的css类,以便能够单独操作它。 然后,我通过Dashboard>Appearance>Editor在Theme样式表中添加了一些自定义代码,但它对文本颜色没有影响。如果我尝试为类应用其他样式,它们会起作用,因此我猜字体颜色会被主题中的某些内容覆盖。例如,如果我使用.appt-nav {&