将页面特定的css文件入队的正确方法

时间:2021-12-04 作者:Raging Vids

我正在寻找一种替代使用函数的方法。php并基于每个页面的ID应用条件,相反,我希望将CSS排在每个页面的顶部,如下所示:

<?php
defined(\'ABSPATH\') or die();
?>

<?php get_header();?>
<?php wp_enqueue_style(\'home\', get_template_directory_uri() . \'/assets/css/style.css\', \'\', 1, \'all\'); ?>
在页眉中,在wp\\u head()之前有自己的CSS脚本,如下所示:

...
    <title><?php wp_title();?></title>

    <?php wp_enqueue_style(\'header\', get_template_directory_uri() . \'/assets/css/header.css\', \'\', 1, \'all\'); ?>

    <?php wp_head();?>

</head>

<body <?php body_class();?>>
因此,通过这种方式,CSS文件将在标头中排队。php,然后在该特定页面中添加另一个。php。对于希望添加特定于页面的css的人来说,这是正确的方法吗?

1 个回复
SO网友:Tom J Nowell

因此,通过这种方式,CSS文件将在标头中排队。php,然后在该特定页面中添加另一个。php。

否,因为:

所有排队的事情都在报头中处理,但您在报头完成后调用它。猫已经从袋子里出来了,马已经逃跑了,秩序很重要。充其量这会将CSS推到页脚,这会将CSS添加到每个页面,而您已经在使用body_class() 该函数的存在是有原因的,所以在任何地方添加CSS,并使用该函数中的类来针对您想要的页面。这样,您就不需要单独的文件或奇怪的PHP逻辑,只需工作即可。E、 g.post archives具有archive 类以及其他类,包括泛型类,如postsinglesingle-post postid-1067, 以及其他实用程序类,如用户是否登录,或特定的模板文件(single-post-template ). WordPress可以服务的所有页面都有这些页面(如果body_class 已使用)。

在这里,条件排队既不是必要的,也不是最佳的,除非您要排队的文件特别大。

但是如果你坚持,你可以在循环外获取帖子ID,并将你的排队包装成if 语句使用$id = get_queried_object_id();. 请注意,如果您使用的是作者存档或类别存档,那么这也可以返回用户ID或术语ID,因此请注意以下功能:is_singular()is_archive()

此外,如果您的造型块,则使用block.json 指定前端的样式表和脚本。如果您这样做,WordPress将自动将这些文件排队,但只有在使用该块时。