Cum pot obține URL-ul temei în PHP?

21 aug. 2010, 00:46:43
Vizualizări: 138K
Voturi: 41

Am nevoie să obțin URL-ul directorului temei pentru a referenția o imagine din directorul image/headers al temei. Cum se face acest lucru în PHP?

0
Toate răspunsurile la întrebare 4
2
50

Această funcție va returna URL-ul directorului temei, astfel încât să-l puteți utiliza în alte funcții:

get_bloginfo('template_directory');

Alternativ, această funcție va afișa URL-ul directorului temei în browser:

bloginfo('template_directory');

De exemplu, pentru o imagine în folderul images/headers al temei, codul ar fi:

<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" alt="Descrierea imaginii" title="Titlul imaginii" />
21 aug. 2010 03:19:11
Comentarii

NOTĂ: acest lucru vă va oferi calea către tema părinte dacă utilizați în prezent o temă copil, și nu tema copil activă. Un răspuns mai detaliat de mai jos explică acest lucru mai pe larg.

Jason Jason
19 oct. 2016 12:40:45

Puteți folosi simplu get_template_directory_uri()

Pei Pei
20 iun. 2018 05:33:33
2
32

Ceea ce a spus @EAMann, cu o precizare. Eric are dreptate în ceea ce privește abordarea generală și modul în care funcțiile bloginfo() și get_bloginfo() funcționează, precum și despre cum să transmiți parametrul 'template_directory' pentru a obține valoarea de care ai nevoie pentru majoritatea temelor.

Cu toate acestea, există o precizare, iar această precizare se referă la noile Teme Copil. Dacă folosești o temă copil, atunci 'template_directory' probabil nu este ceea ce cauți, decât dacă încerci să te referi la o imagine care se află în directorul temei părinte. În schimb, pentru temele copil, probabil că vei dori să transmiți stylesheet_directory (știu, știu, numele nu sunt foarte intuitive, dar așa stau lucrurile!). Folosind stylesheet_directory, codul ar arăta astfel (am scurtat exemplul pentru a nu depăși lățimea):

<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />

Pentru a ilustra acest lucru, am scris un fișier rapid pe care îl poți descărca în directorul rădăcină al site-ului tău sub numele test.php și să-l rulezi pentru a vedea ce afișează. Rulează-l mai întâi cu o temă obișnuită, cum ar fi TwentyTen, apoi cu o temă copil:

<?php
/*
* test.php - Testează diferența dintre Temele Obinuite și Temele Copil
*
*/

include "wp-load.php";

$bloginfo_params = array(
    'admin_email',
    'atom_url',
    'charset',
    'comments_atom_url',
    'comments_rss2_url',
    'description',
    'home',
    'html_type',
    'language',
    'name',
    'pingback_url',
    'rdf_url',
    'rss2_url',
    'rss_url',
    'siteurl',
    'stylesheet_directory',
    'stylesheet_url',
    'template_directory',
    'template_url',
    'text_direction',
    'url',
    'version',
    'wpurl',
);

echo '<table border="1">';
foreach($bloginfo_params as $param) {
    $info = get_bloginfo($param);
    echo "<tr><th>{$param}:</th><td>{$info}</td></tr>";
}
echo '</table>';

Dacă observi cu atenție, vei vedea că există mult mai multe opțiuni pe care le poți transmite funcțiilor bloginfo() și get_bloginfo(); studiază codul și captura de ecran de mai jos pentru idei.

Privind captura de ecran, poți observa că stylesheet_directory returnează același lucru ca 'template_directory' pentru o temă obișnuită, dar o valoare diferită (și probabil valoarea de care ai nevoie) pentru o temă copil.

Valorile returnate de get_bloginfo() cu și fără o Temă Copil în WordPress
(sursa: mikeschinkel.com)

Pentru claritate, în această captură de ecran, wp30.dev este un domeniu care rulează doar pe computerul meu local. Este în prezent o instanță WordPress 3.0.1 și este configurat la 127.0.0.1 (același lucru ca localhost) pe laptopul meu și îl folosesc pentru teste ad-hoc ca acesta. Am folosit VirtualHostX pentru ușurință pe Mac OS X pentru a-mi configura aceste domenii private .dev, dar oricine poate face acest lucru manual prin editarea fișierului hosts al computerului și a fișierului httpd.conf.

Apropo, dacă nu ești familiarizat cu Temele Copil, iată alte două răspunsuri de pe WordPress Answers care te-ar putea ajuta:

21 aug. 2010 10:50:22
Comentarii

Wow, răspuns excelent. Am fost leneș cu tema la care lucrez acum și nu am configurat o temă copil, dar acest lucru va fi foarte util în viitor. Felicitări și pentru acel script. Bine codat. Mulțumesc!

crenshaw-dev crenshaw-dev
21 aug. 2010 13:32:55

Bună, răspuns frumos! De obicei folosesc get_stylesheet_directory_uri(). Ar trebui să folosesc simplul get_stylesheet_directory()?

djb djb
18 ian. 2012 10:59:02
0
13

Întreaga structură a temei este construită pe baza a două opțiuni - template (care deține numele folderului temei părinte) și stylesheet (care deține numele folderului temei copil). Dacă nu este utilizată nicio temă copil, acestea sunt identice.

Pentru a avea flexibilitatea filtrelor, în loc să accesăm direct opțiunile, există în consecință get_template() și get_stylesheet().

Acum, singurul lucru care lipsește este să combinăm acestea cu locația folderului temelor. Acest lucru poate fi făcut cu get_theme_root_uri() și din nou, în mod convenabil, este învelit în get_template_directory_uri() și get_stylesheet_directory_uri().

[get_]bloginfo() cu argumentele template_directory sau stylesheet_directory doar înfășoară aceste funcții și există puține motive să-l folosiți în acest fel. Aș spune că este doar derutant prin faptul că argumentul spune director (care se referă în mod obișnuit la căi locale), dar returnează URL-uri.

Rezumat:

  • folosiți get_template_directory_uri() pentru a vă referi la tema doar sau părinte
  • folosiți get_stylesheet_directory_uri() pentru tema doar sau copil
26 mar. 2012 19:59:56
1
-1

Eu folosesc acest cod (dirname(get_bloginfo('stylesheet_url')))

26 mar. 2012 19:31:05
Comentarii

Nicio explicație de ce această soluție este mai bună decât celelalte?

fuxia fuxia
5 nov. 2012 03:52:14