仅对使用wp_add_inline_style添加的样式表出列,而不对添加的内联样式进行排队

时间:2017-04-03 作者:Thiyagesh

关于我的父母主题,我有以下两行:

wp_enqueue_style(\'theme-dynamic-styles\', get_template_directory_uri() . \'/custom.css\');        
wp_add_inline_style(\'theme-dynamic-styles\', $output);
这个自定义css,我想在子主题上退出队列,但样式表和内联样式都使用相同的句柄名称-theme-dynamic-styles, 因此,两人都退出了队列。是否有办法仅将已排队的样式表出列,而不将使用添加的内联样式出列wp_add_inline_style?

1 个回复
最合适的回答,由SO网友:Fayaz 整理而成

wp_add_inline_style 必须与现有排队样式一起使用。因此,当您退出队列或取消注册该样式时,关联的内联样式也会退出队列或取消注册。

为了避免这种情况,必须首先检索内联样式,然后退出队列。

方法1:

退出队列后的Iftheme-dynamic-styles 句柄时,您不想将新样式排队,那么必须将内联样式与默认样式表排队。例如,假设默认样式句柄名称为twentyseventeen-style. 在这种情况下,您的代码如下所示:

function wpse262235_dequeue_style() {
    $handle = \'theme-dynamic-styles\';
    // get the inline style (returns as array)
    $inline_styles =  wp_styles()->get_data( $handle, \'after\' );
    wp_dequeue_style( $handle );
    if( ! empty( $inline_styles ) ) {
        wp_add_inline_style( \'twentyseventeen-style\', implode( "\\n", $inline_styles ) );
    }
}
// make sure the priority is higher than the hook that enqueued the style
add_action( \'wp_enqueue_scripts\', \'wpse262235_dequeue_style\', 20 );
方法2:退出队列后的Iftheme-dynamic-styles 句柄,您想将一个具有相同句柄名称的新句柄排队,然后必须取消注册theme-dynamic-styles, 排队还不够。在这种情况下,您的代码如下所示:

function wpse262235_dequeue_style() {
    $handle = \'theme-dynamic-styles\';
    $inline_styles =  wp_styles()->get_data( $handle, \'after\' );
    wp_deregister_style( $handle );
    // a new style from child theme with the same handle
    wp_enqueue_style( $handle, get_stylesheet_directory_uri() . \'/custom.css\' );
    if( ! empty( $inline_styles ) ) {
        wp_add_inline_style( $handle, implode( "\\n", $inline_styles ) );
    }
}
add_action( \'wp_enqueue_scripts\', \'wpse262235_dequeue_style\', 20 );

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c