Como enfileirar condicionalmente uma folha de estilo apenas para determinadas páginas?

11

Antes de começar, quero reconhecer que existem alguns artigos realmente bons direcionados a enfileirar condicionalmente scripts com base no conteúdo da página / postagem.

Eles são ótimos, mas são muito mais avançados do que o que eu quero fazer.

Sinto que a resposta está usando a is_page()função interna ( codex ), mas quando tento usá-la, o site é interrompido ou simplesmente não funciona.

Eu acho que estou apenas executando a lógica condicional no lugar errado.

Aqui está o que eu tentei adicionar às minhas funções.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' );

Quando removo a parte condicional, a folha de estilo é enfileirada com êxito, então eu sei que funciona.

Evan Mattson
fonte
Na verdade eu também costumava copiar e colar o seu código e seu trabalho perfeitamente texto forte
abhishek Abhi Abhi

Respostas:

4

Copiei colei seu código no meu ambiente de desenvolvimento, não mudei nada além do nome da página e ele funciona muito bem. Tem certeza de que não está sendo enfileirado e apenas apontou errado ou que a página não foi nomeada incorretamente ou algo assim?

mor7ifer
fonte
11
Obrigado, funciona! Não sei por que não estava funcionando antes. Coisas estranhas aconteceram, eu acho. Espero que isso seja útil para outra pessoa.
precisa saber é o seguinte
2

O que você tem é certo - você está apenas conectando-o à ação errada. Experimente a ação "wp" em vez de "init". Quando o init é executado, o is_page () ainda não funcionará corretamente.

Edição: Eu estou errado. Eu pensei que você tinha add_my_stylesheet ligado ao init, mas você não. is_page deve funcionar a partir da ação enqueue_scripts. Desculpe ... continue ...

MathSmath
fonte
-1

Eu estava tentando seguir o mesmo código e ver se eu posso obter o mesmo resultado, o que eu notei que is_page () não funciona conforme o esperado. segui a variável global $ post e verifiquei o nome da categoria / slug e, posteriormente, use a comparação simples de texto para decidir a ação.

    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 
}

O valor da categoria, se apenas uma categoria (não subcategoria) for

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

Para Subcategoria, você terá a seguinte variável preenchida

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

Agora, com base na sua necessidade, use o código abaixo, como eu estou usando para verificar o nome da subcategoria:

//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 
        }

Código completo:

        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' );

Exemplo: * Nenhum CSS extra http://whatsq.com/category/gst16/

* CSS extra com experiência da categoria acima apenas http://whatsq.com/information-technology/shopping-information-technology/mothers-day-gift-plan-show-mom-the-love-with-flowers-and- e mais/

Piclaunch S
fonte
Eu fiz uma pergunta? É apenas a minha resposta para o tópico atual. Qual é mais detalhadamente.
precisa saber é o seguinte