在逐页的基础上用自定义CSS覆盖所有的CSS

时间:2021-08-15 作者:typosruinjokes

我有一个7页的静态网站,我用一个页面生成器主题、子主题和一些插件构建。我想用定制的CSS样式表逐页覆盖所有CSS(主题和插件)。

我该怎么做?我可以用函数来实现这一点吗。php和我的孩子主题?请明确回答——我还在学习Wordpress!

更多信息:如果你好奇,我用了一个方便的工具--purifycss.online -- 删除未使用的CSS并保存每个页面的CSS样式表。我想删除所有其他CSS,并将其应用到正确的页面。PurifyCSS链接到blog post 这部分描述了这个过程。然而,本文描述了如何将每个样式表分配给页面类型,而不是页面。我试图根据需要修改该方法,但失败了。

2 个回复
SO网友:Mohammad Qasim

您可以将页面类型条件替换为match your page by ID or slug instead.

https://www.webperftools.com/blog/how-to-remove-unused-css-in-wordpress/

function enqueue_pure_styles() {
    $suffix = \'\';
    if (is_front_page()) {
       $suffix = \'.front-page\';
    } else if (is_page()) {
       $suffix = \'.pages\';
    } else if (is_single()) {
       $suffix = \'.blog\';
    } else if (is_archive()) {
       $suffix = \'.archives\';
    }
    wp_enqueue_style(\'pure-styles\', get_stylesheet_directory_uri().\'/styles\'.$suffix.\'.pure.css\');
}
因此,可以修改参考博客中的上述代码,以按页面slug(或ID)进行检查。您可以使用以下名称为每个页面保存样式表

styles.page1.pure.css, styles.page2.pure.css, etc.
然后,可以使用以下代码根据当前页面段塞将样式表排队。

function enqueue_pure_styles() {
    $valid_page_slugs = [\'page1\', \'page2\', \'page3\', \'page4\' ....]; //Just replace wiht you page slugs.
    global $post;

    $post_slug = $post->post_name;

    //Bail early if page is not in the list. Or enqueue some default stylesheet
    if (!in_array($post_slug, $valid_page_slugs)) {
      return;
    }

    wp_enqueue_style(\'pure-styles\', get_stylesheet_directory_uri().\'/styles.\'.$post_slug.\'.pure.css\');
}
如果slug不匹配,您还可以使用一些默认css。

SO网友:Sebas Rossi

您可以在不使用任何PHP函数引用body类的情况下应用CSS,其中页面id为:

body.page-id-48>header>div{}
但您可能需要使用完整选择器,以获得更具体的选择器

body.page-template-default.page.page-id-182 div#page.site header#masthead.site-header>div{}
或者,如果仍要使用PHP函数,请检索页面url以了解必须应用哪个CSS:

$page_id = get_permalink( get_the_ID() );
if($page_id==48){
    echo "<style>div{width:100%;}</<style>";}
else{
}
或使用:

global $wp;
echo home_url( $wp->request );
获取页面slug

相关推荐

Hiding Label via CSS

我正在尝试隐藏此URL上的一些文本和复选框:https://bndlstech.com/wholesale-registration-form/具体来说,我试图隐藏;从帐单地址复制”;文本和复选框。目前正通过WooCommerce批发插件将其添加到页面中。这就是代码当前的样子:<label for="wwp_wholesaler_copy_billing_address">Copy from billing address</label> <inp