web-dev-qa-db-fra.com

is_front_page ne fonctionne pas dans functions.php

J'essaie d'inclure un fichier CSS à l'aide de wp_enqueue_style conditionnellement si je suis sur la page d'accueil. Je teste la page d'accueil avec ce code:

if ( is_front_page() ) wp_enqueue_style ('TBDhome', get_template_directory_uri() . '/css/TBDhome.css','all');

Cela a fonctionné lorsque j'ai testé dans le fichier d'en-tête et dans le fichier CSS.

1
LindaH53

Même si cette question risque de ne pas être votée - parce que pas assez d'informations ont été fournies et qu'il est assez facile de trouver des tutoriels ailleurs, je vais vous aider.

Dans votre fichier functions.php de votre thème, procédez comme suit:

add_action( 'wp_enqueue_scripts', 'wp5849_scripts' );
function wp5849_scripts() {
    if ( is_front_page() ) :
        wp_enqueue_style('TBDhome', get_stylesheet_directory_uri() . '/css/TBDhome.css');
    endif;
}

Ce que cela fait: La première ligne add_action est le raccord permettant d'exécuter votre fonction wp5849_scripts() à un moment donné de la configuration interne de WordPress. Vous pouvez en savoir plus sur les crochets d’action et les filtres dans le codex WordPress .

La deuxième partie est la fonction réelle pour mettre en file d'attente la feuille de style. Vérifie si c'est la page d'accueil du site, s'il passe, il chargera la feuille de style.

J'ai mis à jour le répertoire pour qu'il soit get_stylesheet_directory_uri(), car si vous utilisez un thème enfant, get_template_directory_uri() renverra le répertoirePARENTtheme. get_stylesheet_directory_uri() fonctionnera avec le thème actuellement actif (parent ou enfant).

Vous pouvez en savoir plus sur les arguments passés à wp_enqueue_styleici

Remarque: vous possédez peut-être déjà une fonction qui met les scripts et les styles en file d'attente dans votre functions.php (recherchez le hook add_action( 'wp_enqueue_scripts')). Si tel est le cas, vous devez simplement ajouter:

if ( is_front_page() ) :
        wp_enqueue_style('TBDhome', get_stylesheet_directory_uri() . '/css/TBDhome.css');
endif;

à la fonction que le add_action appelle. Je voulais ajouter cela comme une option.

EDIT: Il semble qu'il y ait un problème de thème ou de paramètre plus important, basé sur les commentaires de l'OP. Voici une option pour placer la feuille de style dans le header.php

if ( is_front_page() ) {
    echo '<link rel="stylesheet" id="TBDHome-css"  href="' . get_stylesheet_directory_uri() . '/css/TBDhome.css" type='text/css' media='all' />
}
0
disinfor

is_front_page() renverra false avant le hook wp car l'objet wp n'est pas encore configuré.

//* If placed directly in functions.php, this will work
add_action( 'wp', 'wpse_282498_wp' );
function wpse_282498_wp() {
  if( is_front_page() ) {
    do_something_useful();
  }
}

//* If placed directly in functions.php, this will *not* work
if( is_front_page() ) {
  //* Because this will never be run
  do_something_useful();
}
0
Nathan Johnson