get_template_directory_uri() și alte tag-uri URL nu funcționează în temă
Încerc să adaug get_template_directory_uri sau bloginfo() în fișierul meu header.php pentru a crea căi relative pentru fișierele CSS și JS din temă.
De exemplu,
<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/style.css">
Teoretic, ar trebui să afișeze
<link rel="stylesheet" href="http://mysite.com/wp-content/themes/myTheme/css/style.css">
Problema este că atunci când vizualizez tag-ul <head>
în codul sursă, tot ce văd este:
<link rel="stylesheet" href="/css/style.css">
Toate celelalte tag-uri template funcționează în fișierele mele (get_permalink(), the_title(), etc.), dar acesta nu. echo get_bloginfo('url')
Funcționează și el.
Mă gândeam să modific fișierul wp-config.php
și să fac ceva de genul:
define('WP_HOME','http://example.com/blog');
define('WP_SITEURL','http://example.com/blog');
...dar nu sunt sigur dacă aceasta este cea mai bună practică pentru rescrierea URL-ului.
Am omis ceva?

Ce ai:
<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/style.css">
ar trebui să funcționeze bine. Am copiat și lipit în header.php
și a funcționat.
Dar acesta nu este modul corect de a include fișiere CSS sau JavaScript. Metoda corectă este să folosești cârligul wp_enqueue_scripts
. De exemplu, să presupunem că ai un fișier JavaScript pe care dorești să-l încarci și care necesită jQuery pentru a funcționa, încarci scriptul și listezi jQuery ca o dependență. WordPress se ocupă de rest:
<?php
function my_scripts_method() {
// înregistrează locația scriptului și dependențele
wp_register_script('custom_script',
get_template_directory_uri() . '/js/custom_script.js',
array('jquery')
);
// încarcă scriptul
wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>
Pentru stiluri (se folosește același cârlig):
function my_styles_method() {
// Înregistrează stilul astfel pentru o temă:
wp_register_style( 'my-custom-style', get_template_directory_uri().'/css/custom-style.css');
// încarcă stilul
wp_enqueue_style( 'my-custom-style' );
}
add_action( 'wp_enqueue_scripts', 'my_styles_method' );
Te rugăm să citești aceste pagini din Codex despre wp_enqueue_script()
și wp_enqueue_style()
Poate nu pare important, dar mai ales cu încărcarea scripturilor, vei descoperi probabil că încărcarea lor 'manuală' va strica tema și/sau plugin-urile tale.

Nici măcar nu știam că există asta. Cu siguranță voi migra codul meu la această metodă în curând. Problema mea actuală este încercarea de a înțelege de ce <?php get_template_directory_uri() ?>
returnează gol.

Din păcate, nu sunt familiarizat cu var_dump
în WordPress. Poți să clarifici?

Nu este WordPress: var_dump(get_template_directory_uri());

Scuze, ceea ce voiam să spun este că nu știu cum să folosesc var_dump
și să citesc rezultatul în WordPress. Presupun că doar să-l apelez în header.php nu îmi va oferi ceea ce caut. Totuși, apreciez ajutorul tău.

Puțin întârziat cu asta, dar tocmai am întâmpinat aceeași problemă. Problema mea a fost că am înlocuit toate fișierele temei cu un șablon de pornire gol și nu am parcurs pașii de instalare a temei, așa că nu obțineam directorul corect. Reactivarea temei ar putea fi un prim pas adecvat în găsirea unei soluții pentru această problemă.

Am întâlnit aceeași problemă înainte - în cazul meu, get_template_directory_uri()
returna tema copil, nu cea părinte, ceea ce bineînțeles este exact opusul a ceea ce ar trebui să facă. Schimbarea la tema părinte și apoi revenirea la tema copil a rezolvat complet problema pentru mine.

ai încercat versiunea simplă a bloginfo și anume:
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('template_url); ?>/css/style.css" />
sau poți folosi versiunea ta (adică get_bloginfo) dar cred că
ar trebui să o atribui unei variabile și apoi să o afișezi..
<link rel="stylesheet" type="text/css" media="all" href="<?php $turl = get_bloginfo('template_url); echo tulr; ?>/css/style.css" />
...
Sper că acest lucru te ajută să rezolvi problema ta...
Cu stimă, Sagive.

Salut Sagive,
Mulțumesc pentru răspuns.
Din păcate, niciuna din sugestiile tale nu funcționează. Încă creează URL-uri relative la "mysite.com" în loc de "mystie.com/wp-content/themes/myTheme/"
O să mai încerc și voi vedea dacă găsesc o soluție.

De fapt, get_bloginfo( 'template_url' )
în sine apelează get_template_directory_uri()
, deci metoda mai simplă este să folosești direct get_template_directory_ur()
.

@ChipBennett Sunt de acord. Din anumite motive, site-ul meu pe această instalare nu apelează corect get_template_directory_uri()
. Speram că cineva a întâmpinat ceva similar.

nu văd nicio diferență :) - bloginfo este pe lista mea de snippet-uri așa că... prefer această variantă... spui @aboutaaron Vrei să spui că încă nu funcționează?

@SagiveSEO Corect. <?php bloginfo('template_url'); ?>
nu afișează nimic! Nu am mai văzut așa ceva. A funcționat perfect pe versiunea de dezvoltare, dar când am mutat tema, URL-urile s-au stricat și din nu știu ce motiv, acum nu mai funcționează.

@SagiveSEO acesta este ideea: dacă echo get_template_directory_uri()
nu funcționează, atunci este imposibil ca bloginfo( 'template_url' )
să funcționeze ca alternativă. (Vezi referința din core pe care am trimis-o.)

@aboutaaron ai reușit să rezolvi? Am aceeași problemă. get_stylesheet_directory_uri() și get_template_directory_uri() returnează șir gol.

dacă primești șir gol, atunci pagina în care folosești comanda nu se află în interiorul WordPress... Aceasta este o comandă internă WP și ar trebui să funcționeze fără probleme: get_template_directory_uri() SAU get_bloginfo('template_url') - în ce fișier folosești această comandă?

Dezactivează tema curentă (adică activează o temă diferită, de exemplu TwentyFourteen) și apoi reactivează tema ta.
Când o temă este activată, WordPress trece prin unele configurații inițiale ale URL-urilor relative, etc., și există uneori cazuri (în special în dezvoltarea de teme noi) în care WordPress nu rulează acel cod de inițializare. Dezactivarea și reactivarea temei asigură că WordPress primește o altă șansă de a rula codul de inițializare al temei.
