有条件地将一个css文件入队的正确方式是什么?

时间:2021-03-21 作者:silviubogan

get_queried_object 退货NULL 连接到的函数内部wp_enqueue_scripts 当转到我的网站上不存在的类别URL时,执行操作挂钩。如果类别存在,则不会显示错误,我认为它不存在。

我需要它有条件地加载CSS文件,以便更好地模块化,不是在管理区域,而是为最终用户。

正确的方法是什么?

HTML中显示的错误:

注意:正在尝试在/var/www/html/wp-content/themes/custom-theme/functions中获取非对象的属性“term\\u-id”。php在线193

从第193行开始的代码:

if (get_queried_object()->term_id === 3 ||
        (count(get_the_category()) > 0 && get_the_category()[0]->slug == \'arta\')) {
    wp_enqueue_style( \'twentytwenty-style-2\', get_stylesheet_directory_uri() . \'/style-arta.css\', array(), $theme_version );
}

2 个回复
SO网友:Sally CJ

我同意@PatJ — 你应该检查一下get_queried_object() 是否返回对象。

但是您可以通过使用is_category()in_category() 哪些是conditional tags 在WordPress中:

if ( is_category( 3 ) || in_category( \'arta\' ) ) {
    wp_enqueue_style( \'twentytwenty-style-2\', get_stylesheet_directory_uri() . \'/style-arta.css\', array(), $theme_version );
}

SO网友:Pat J

根据文件,get_queried_object() 是的包装器WP_Query::get_queried_object(), 将返回null 如果没有这样的物体。

检查是否有非null返回的一种简单方法是使用empty():

$object = get_queried_object();
if ( 
    ! empty( $object) &&
    ( 
        $object->term_id === 3 ||
        (
            count( get_the_category() ) > 0 &&
            get_the_category()[0]->slug == \'arta\'
        )
    ) 
) {
    wp_enqueue_style( \'twentytwenty-style-2\', get_stylesheet_directory_uri() . \'/style-arta.css\', array(), $theme_version );
}