Care este cea mai bună metodă de a include imagini din folderul de imagini al șablonului în WordPress?

12 aug. 2010, 18:32:16
Vizualizări: 13.7K
Voturi: 8

Care este cea mai bună metodă de a include imagini din folderul de imagini al șablonului? Este mai bine să folosești get_bloginfo('template_url')? Am înțeles că ar fi mai eficient să hard-codezi calea către folderul de imagini pentru a evita apelurile de funcții în PHP..

Ce părere aveți?

0
Toate răspunsurile la întrebare 5
1

Am înțeles că este mai bine să hardcodezi calea către folderul cu imagini, deoarece în acest fel economisești apeluri de funcții în PHP..

Cu siguranță nu m-aș îngrijora de apelurile de funcții, cache-ul obiect din WordPress se va ocupa de toate aceste aspecte. Ai putea defini calea ca o constantă dacă ai vrea, dar personal nu m-aș deranja.

Aș face pur și simplu:

<img src="<?php bloginfo('stylesheet_directory')"?>/images/image.png" />

am editat asta în

<img src="<?php bloginfo('stylesheet_directory');?>/images/image.png" /> (varianta de mai sus generează erori)

12 aug. 2010 18:53:18
Comentarii

Doar câteva observații: în primul rând, aș folosi get_stylesheet_directory_uri() în loc de bloginfo( 'stylesheet_directory' ); în al doilea rând, dacă imaginea nu este destinată să fie suprascrisă de un Child Theme, atunci aș folosi get_template_directory_uri().

Chip Bennett Chip Bennett
9 feb. 2012 15:48:54
5

Cea mai ușoară și simplă metodă de a face acest lucru este să definiți o variabilă unică în fișierul functions.php al temei dumneavoastră.

De exemplu:

<?php
$theme_name_images = get_bloginfo('stylesheet_directory') . '/images/';
?>

Nu este nevoie de clase, așa cum a sugerat un răspuns anterior.

EDIT: Ar trebui să folosiți get_bloginfo, în loc de bloginfo(), așa cum a menționat Viper007Bond.

12 aug. 2010 18:58:08
Comentarii

Dar aceasta poate încurca namespace-ul global.

WhIteSidE WhIteSidE
12 aug. 2010 19:03:31

adevărat, dar este cea mai simplă. Nu am spus niciodată că este cea mai curată metodă de a face asta.

john010117 john010117
12 aug. 2010 19:52:12

Da, dar încurcarea namespace-ului global este o problemă doar dacă nu folosește o convenție bună de denumire a variabilelor. De exemplu, ar putea folosi amits_stylesheet_directory și amits_template_url sau în loc de "amits" ar putea folosi numele clientului.

MikeSchinkel MikeSchinkel
12 aug. 2010 19:52:22

bloginfo() afișează. Tu vrei get_bloginfo() care returnează.

Viper007Bond Viper007Bond
12 aug. 2010 22:37:48

@Viper007Bond - Mulțumesc. Am corectat postarea mea.

john010117 john010117
13 aug. 2010 01:44:36
0

@Amit: Depinde. Majoritatea apelurilor de funcții sunt destul de rapide în PHP, așa că dacă te preocupa performanța, nu m-aș îngrijora prea mult. Totuși, înțeleg sentimentul când vezi toate acele apeluri. Cu toate acestea, nu aș dori niciodată să hardcodez căile.

Dacă vei folosi get_bloginfo('template_url') de multe ori în tema ta, de ce nu iți atribui o variabilă globală în fișierul functions.php și apoi să o referențiezi oriunde ai folosi în mod normal apelul funcției? Asigură-te că o numești ceva puțin probabil să intre în conflict, cum ar fi amits_template_url. Deci, fă asta în functions.php:

global $amits_template_url;
$amits_template_url = get_bloginfo('template_url');

Apoi, în tema ta, referențiază variabila oriunde ai fi folosit get_bloginfo('template_url').

12 aug. 2010 19:49:25
1

Ei bine, depinde de ce fel de dezvoltare faci. Dacă lucrezi la dezvoltarea de plugin-uri, trebuie să folosești funcțiile pentru că nu vei ști niciodată cu siguranță care va fi structura URL-urilor. Dacă lucrezi la un proiect specific pentru un anumit website, din punct de vedere tehnic este acceptabil să folosești valori hardcodate, dar acest lucru este totuși nerecomandat, deoarece exclude posibilitatea ca structura URL-urilor să se poată schimba vreodată.

Ori de câte ori dezvolt plugin-uri sau teme, structuraz programul într-o clasă; în acest fel, pot salva valori repetitive ca proprietăți ale obiectului (de exemplu, URL-ul WP și template_url). Astfel, le pot folosi rapid fără a apela funcțiile în mod repetat.

12 aug. 2010 18:39:03
Comentarii

Intenția mea a fost pentru dezvoltarea unui temă specifică pentru un anumit client (nu o temă "distribuibilă"), poți să dai un exemplu de cod pentru o astfel de clasă, te rog?

Amit Amit
12 aug. 2010 18:41:32
0

Doar legați fișierele imaginii din fișierul CSS, ceea ce înseamnă că puteți folosi calea relativă de la fișierul CSS la imagini. Aceasta este o soluție bazată doar pe CSS. Nu este necesar cod PHP. Munca este efectuată de browser.

24 aug. 2010 17:58:36