web-dev-qa-db-fra.com

get_template_directory_uri () et d'autres tags d'URL ne fonctionnant pas dans le thème

Donc, j'essaie d'ajouter get_template_directory_uri ou bloginfo () à mon fichier header.php pour créer des chemins relatifs pour les fichiers CSS et JS du thème.

Par exemple.,

    <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/style.css">

En théorie, cela devrait montrer

    <link rel="stylesheet" href="http://mysite.com/wp-content/themes/myTheme/css/style.css">

Le problème, c'est que lorsque je visualise la balise <head> dans la source, tout ce que je vois est:

    <link rel="stylesheet" href="/css/style.css">

Toutes les autres balises de modèle fonctionnent dans mes fichiers (get_permalink (), the_title (), etc.), mais celle-ci ne l’est pas. echo get_bloginfo('url') Fonctionne également.

Je pensais jouer avec le fichier wp-config.php et faire quelque chose comme:

define('WP_HOME','http://example.com/blog');
define('WP_SITEURL','http://example.com/blog');

... mais je ne suis pas sûr que ce soit la meilleure pratique pour réécrire l'URL.

Est-ce que je manque quelque chose?

2
aboutaaron

Ce que tu as:

 <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/style.css">

devrait fonctionne bien. J'ai copié et collé dans mon header.php et cela a fonctionné.

Mais ceci est not comment vous devriez inclure les fichiers css ou javascript. La bonne façon consiste à utiliser le hook wp_enqueue_scripts. Par exemple, supposons que vous souhaitiez charger un fichier javascript nécessitant le bon fonctionnement de jQuery, mettez le script en file d'attente et listez jQuery comme une dépendance. WordPress fait le reste:

<?php
function my_scripts_method() {
   // register your script location and dependencies
   wp_register_script('custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery')
    );
   // enqueue the script
   wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

Pour les styles (le même crochet est utilisé):

function my_styles_method() {  
    // Register the style like this for a theme:  
    wp_register_style( 'my-custom-style', get_template_directory_uri().'/css/custom-style.css');  

    // enqueue the stule  
    wp_enqueue_style( 'my-custom-style' );  
}  
add_action( 'wp_enqueue_scripts', 'my_styles_method' ); 

Veuillez lire ces pages du Codex sur et wp_enqueue_script() et wp_enqueue_style()

Cela peut ne pas sembler important, mais en particulier avec le chargement de scripts, vous constaterez probablement que le fait de les charger "manuellement" va casser votre thème et/ou vos plug-ins.

4
Stephen Harris

Un peu tard, mais je viens de rencontrer le même problème. Mon problème était que j'avais changé tous mes fichiers de thème avec un thème de modèle de départ vide et que je n'avais pas suivi les étapes d'installation du thème, de sorte que le répertoire approprié n'était pas obtenu. La réactivation du thème peut constituer une première étape appropriée pour trouver une solution à ce problème.

2
Matt

Désactivez le thème actuel (c.-à-d. Activez un thème différent, par exemple TwentyFourteen), puis réactivez votre thème.

Lorsqu'un thème est activé, WordPress passe par une configuration initiale des uri relatifs, etc. et il existe parfois des cas (notamment le développement d'un nouveau thème) où WordPress n'exécute pas ce code d'initialisation. La désactivation et la réactivation du thème permettent à WordPress d'avoir une nouvelle chance d'exécuter la configuration de l'initialisation du thème.

0
reor

si get_bloginfo ('url') fonctionne dans header.php, au lieu d’utiliser get_template_directory_uri (); utilisez bloginfo ('stylesheet_url'); fonction qui renvoie l'URL du fichier CSS principal (généralement style.css) du thème actif.

0
Vinod Dalvi

avez-vous essayé la version simple de bloginfo aka:

<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('template_url); ?>/css/style.css" />

ou vous pouvez utiliser votre version (ce qui signifie get_bloginfo) mais je pense que vous
devrait l'assigner à un var et l'écho le ..

<link rel="stylesheet" type="text/css" media="all" href="<?php $turl = get_bloginfo('template_url); echo tulr; ?>/css/style.css" />

...

J'espère que cela vous aidera à résoudre votre problème ...

Cordialement, Sagive.

0
Sagive SEO