因此, 我为自己构建了一个入队的样式表连接器, 当它起作用时, 我发现”
依赖项”
似乎混乱了……在这种情况下, 我注销并退出了我的”
自定义”
样式表, 注册并排队我的串联样式表, 然后使用串联句柄作为其依赖项”
重新”
注册并”
重新”
排队我的自定义样式表…
它始终在串联样式表之前加载。
任何想法为什么会发生这种情况?在我的孩子主题中, 我以默认优先级将”
自定义”
放入父级主题中, 在该父级中, 我正在执行连接, 并且我的操作具有最高优先级。
编码:
protected function concatenate_css( $_cache_time ) {
add_action( 'wp_enqueue_scripts', function( ) use ( $_cache_time ) {
// need our global
global $wp_styles;
// our css string holder
$_css_string = '';
// path to the theme
$_theme_path = get_stylesheet_directory( );
// uri to the theme
$_theme_uri = get_stylesheet_directory_uri( );
// new file path
$_new_css = $_theme_path . '/style.concat.css';
// force the order based on the dependencies
$wp_styles ->
all_deps( $wp_styles ->
queue );
// setup our exclusions
$_exclude = array( 'custom', 'concatcss', );
// loop through everything in our global
foreach( $wp_styles ->
queue as $_hndl ) {// get the source from the hanlde
$_path = $wp_styles ->
registered[$_hndl]->
src;
// if we have a "custom" handle, we do not want to process it, so ... skip it
// we also do want to process any source that is not set
if( ! in_array( $_hndl, $_exclude ) &
&
$_path ) {// we also only want to do this for local stylehseets
if ( strpos( $_path, site_url( ) ) !== false ) {$_path = ABSPATH . str_replace( site_url( ), '', $_path );
// now that we have everything we need, let's hold the contents of the file in a string variable, while concatenating
$_css_string .= file_get_contents( $_path ) . PHP_EOL;
// now remove the css from queue
wp_dequeue_style( $_hndl );
// and deregister it
wp_deregister_style( $_hndl );
}
}
}// dequeue and deregsiter any "custom" style
wp_dequeue_style( 'custom' );
wp_deregister_style( 'custom' );
// now write out the new stylesheet to the theme, and enqueue it
// check the timestamp on it, versus the number of seconds we are specifying to see if we need to write a new file
if( file_exists( $_new_css ) ) {
$_ftime = filemtime( $_new_css ) + ( $_cache_time );
$_ctime = time( );
if( ( $_ftime <
= $_ctime ) ) {
file_put_contents( $_new_css, $_css_string );
}
} else {
file_put_contents( $_new_css, $_css_string );
}wp_register_style( 'concatcss', $_theme_uri . '/style.concat.css', array( ), null );
wp_enqueue_style( 'concatcss' );
// requeue and reregister our custom stylesheet, using this concatenated stylesheet as it's dependency
wp_register_style( 'custom', $_theme_uri . '/css/custom.css?_=' . time( ), array( 'concatcss' ), null );
wp_enqueue_style( 'custom' );
}, PHP_INT_MAX );
}
页面源的屏幕截图
文章图片
#1 【WordPress排队样式依赖项加载不正常】只需注册你的串联脚本, 但不要使其入队。
wp_register_style( 'concatcss', $_theme_uri . '/style.concat.css', array( ), null );
// requeue and reregister our custom stylesheet, using this concatenated stylesheet as it's dependency
wp_enqueue_style( 'custom', $_theme_uri . '/css/custom.css?_=' . time( ), array( 'concatcss' ), null );
推荐阅读
- 使用kallyas-child主题的WordPress错误
- powershell将计算机加入到AD域安全组,并输出日志
- Android技术分享| 自习室自定义View代替通知动画(完)
- 网络不可用怎么办(无法访问互联网怎么办?网络故障原因大起底)
- #私藏项目实操分享#云开发数据库有哪些常用操作
- 百度搜索中台海量数据管理的云原生和智能化实践
- #yyds干货盘点#linux命令--rm,rmdir,mv
- #yyds干货盘点#MySQL索引优化系列(索引失效)
- #yyds干货盘点#SpringSecurity默认页面生成