wp_get_attachment_image_src() nu returnează ceea ce mă aștept
Am această problemă enervantă pe care nu o pot rezolva:
if( $meta1 = '' && $meta2 = '' ) {
// Obține URL-ul imaginii cu dimensiunile personalizate
$image_attributes = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), my_own_size_function());
echo $image_attributes[0];
} elseif( $meta1 != '' ) {
echo $meta1;
} elseif ( $meta2 != '' ){
$image_attributes = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), my_own_size_function() );
echo $image_attributes[0];
} else {
echo "ko";
}
Când folosesc print_r pe my_own_size_function()
primesc un array ca acesta:
Array
(
[0] => 600
[1] => 400
)
Dar când folosesc print_r pe $image_attributes
primesc un alt rezultat:
Array
(
[0] => http://localhost/wordpress/wp-content/uploads/2013/07/my_image.jpg
[1] => 200
[2] => 150
[3] =>
)
Are cineva vreo idee care ar putea fi motivul pentru aceasta? Mulțumesc anticipat.

Mulțumesc, dar ar trebui să fie array(600,400)
. Oricum, am încercat deja asta, dar am verificat funcția în codex și ei spun că $size
poate fi un array, funcția mea returnează deja array(600,400);

Următoarele informații se bazează pe experimente efectuate în ultimele 15 minute, așa că nu le-aș numi canonice, dar...
wp_get_attachment_image_src()
utilizează funcția image_downsize()
, care va încerca să găsească și să returneze imaginea cea mai apropiată ca dimensiune de valorile furnizate. Dacă experimentați cu dimensiuni cunoscute ale imaginilor (priviți imaginile salvate în wp-content/uploads
), veți înțelege la ce mă refer. În ciuda numelui, uneori poate returna imagini mai mari, dar componentele înălțime și lățime din array ar trebui să fie setate la valorile furnizate sau la o aproximare scalată (după cum se pare) dacă aceste valori sunt extrem de inexacte. Nu pot spune dacă această "scalare" este ceea ce se întâmplă în cazul dvs., dar este posibil și pare plauzibil.
Să dau un exemplu. Am o imagine salvată la 150x150, 293x300 și la dimensiunea completă. Acest cod...
var_dump(wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array(20, 20)));
... returnează un array cu imaginea 150x150 și dimensiunile pe care le-am furnizat—20x20. Totuși, acest cod...
var_dump(wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array(200, 250)));
... returnează URL-ul imaginii 150x150, dar cu dimensiunile 200x204. Acestea nu sunt dimensiunile pe care le-am furnizat. Valorile dimensiunilor au fost modificate de un algoritm. După investigații suplimentare, se pare că image_constrain_size_for_editor
este un candidat mai probabil.
De asemenea, puteți verifica dacă ceva a aplicat o funcție la filtrul image_downsize
, deoarece acesta poate prelua complet controlul asupra funcției.

Mulțumesc pentru răspuns. Lectură interesantă, dar problema este că dimensiunea nici măcar nu se schimbă. Am inclus un selector de dimensiune pentru imaginea reprezentativă. Nu pare să vină din my_own_size_function()
pur și simplu pentru că obțin ce vreau când folosesc print_r
