wp_add_inline_style
必须与现有排队样式一起使用。因此,当您退出队列或取消注册该样式时,关联的内联样式也会退出队列或取消注册。
为了避免这种情况,必须首先检索内联样式,然后退出队列。
方法1:
退出队列后的If
theme-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:退出队列后的If
theme-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 );