如何有条件地将样式表仅排入特定页面?


11

在开始之前,我想承认有一些非常好的文章,这些文章针对如何基于页面/帖子内容有条件地使脚本入队。

这些很棒,但是它们比我想做的要先进得多。

我觉得答案是使用内置is_page()函数(codex),但是当我尝试使用它时,站点中断了,或者根本无法正常工作。

我认为我只是在错误的位置执行条件逻辑。

这是我尝试添加到我的functions.php中的内容:

function wpse39130_register_more_stylesheets() {
    wp_register_style( 'stylesheet_name', get_stylesheet_directory_uri() . '/stylesheet.css' );
}
add_action( 'init', 'wpse39130_register_more_stylesheets' );

function wpse39130_conditionally_enqueue_my_stylesheet() {
    // only enqueue on product-services page slug
    if ( is_page( 'products-services' ) ) {
        wp_enqueue_style( 'stylesheet_name' );
    }
}
add_action( 'wp_enqueue_scripts', 'wpse39130_conditionally_enqueue_my_stylesheet' );

当我删除其中的条件部分时,样式表已成功入队,因此我知道这可行。


实际上,我还使用了复制和粘贴代码及其完美完美文本的功能
Abhishek Abhi Abhi

Answers:


4

我将粘贴的代码复制到我的开发环境中,只更改了页面名称,就可以了。您确定它没有被排队,只是指向错误,或者页面命名不正确或其他原因?


1
谢谢,它确实有效!我不知道为什么以前没有用。我猜奇怪的事情已经发生了。希望这对其他人有用。
埃文·马特森

2

您所得到的是对的-您只是将其挂接到错误的动作上。尝试使用“ wp”操作而不是“ init”。当init运行时,is_page()将无法正常工作。

编辑: 我错了。我以为您已经将add_my_stylesheet钩接到了init上,但是您没有。is_page应该通过enqueue_scripts操作起作用。对不起...继续...


-1

我试图遵循相同的代码,看看是否可以获得相同的结果,我注意到is_page()不能按预期工作。因此,我跟随全局变量$ post并检查类别名称/子段,然后使用简单文本比较来确定操作。

    global $post;
    $postcat = get_the_category( $post->ID );
if ( ! empty( $postcat ) ) {
 echo esc_html( $postcat[0]->ID );   // Debug 
 echo esc_html( $postcat[1]->name ); // Debug 
 echo var_dump($postcat ); // Debug 
}

如果仅是一个类别(不是子类别),则类别的值将为

echo esc_html( $postcat[0]->name ); //Display name on screen

对于子类别,您将填写以下变量

echo esc_html( $postcat[1]->name ); //Display name on screen

现在,根据您的需要,使用下面的代码,就像我正在检查子类别名称一样:

//Use $postcat[0]->name for parent category name Can be your sub category name 
        if ( $postcat[1]->name == 'Shopping' ) { 

                wp_enqueue_style( 'stylesheet_name' );
            }else{
        // other code 
        }

完整代码:

        function wpse39130_register_more_stylesheets() {
        wp_register_style( 'stylesheet_name', get_stylesheet_directory_uri() . '/whatsqshop.css' );
    }
    add_action( 'init', 'wpse39130_register_more_stylesheets' );

    function wpse39130_conditionally_enqueue_my_stylesheet() {
        // only enqueue on product-services page slug
    global $post; //GLobal Post variable 
    $postcat = get_the_category( $post->ID ); // Get the Category info from POST ID

    if ( ! empty( $postcat ) ) { // IF POST CATEGORY IS NOT EMPTY
    //    echo esc_html( $postcat[0]->slug );   //Display SLUG On output screen <Debug option>
  //echo esc_html( $postcat[0]->name ); //Display name on screen
     //echo esc_html( $postcat[1]->name ); //Display name on screen

    //echo var_dump($postcat ); // For debug 
    }
    //  if( is_single(88)) {
       if ( $postcat[1]->name == 'Shopping' ) {
            wp_enqueue_style( 'stylesheet_name' );
        }else{
    //wp_enqueue_style( 'stylesheet_name' );
    }

    }
    add_action( 'wp_enqueue_scripts', 'wpse39130_conditionally_enqueue_my_stylesheet' );

示例:*没有多余的CSS http://whatsq.com/category/gst16/

*仅上述类别的带有背景的额外CSS http://whatsq.com/information-technology/shopping-information-technology/mothers-day-gift-plan-show-mom-the-love-with-flowers-and-和更多/


我问过一个问题吗?这只是我对当前主题的回答。更详细的。
Piclaunch S
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.