wp_get_attachment_image_src() non restituisce ciò che voglio - Risoluzione
Ho questo fastidioso problema che non riesco a risolvere:
if( $meta1 = '' && $meta2 = '' ) {
// Ottiene gli attributi dell'immagine in primo piano
$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";
}
Quando eseguo print_r su my_own_size_function()
ottengo un array come questo:
Array
(
[0] => 600
[1] => 400
)
Ma quando eseguo print_r su $image_attributes
ottengo un risultato diverso:
Array
(
[0] => http://localhost/wordpress/wp-content/uploads/2013/07/my_image.jpg
[1] => 200
[2] => 150
[3] =>
)
Qualcuno ha idea del motivo per cui succede questo? Grazie in anticipo.

Grazie amico, ma questo sarebbe array(600,400)
invece. Comunque l'ho già provato ma ho controllato la funzione nel codex e dicono che $size
può essere un array, la mia funzione restituisce già array(600,400);

Quanto segue si basa interamente su un esperimento degli ultimi 15 minuti circa, quindi non lo definirei canonico ma...
wp_get_attachment_image_src()
utilizza la funzione image_downsize()
, che tenterà di trovare e restituire l'immagine più vicina per dimensioni a quelle specificate. Se sperimenti con dimensioni di immagini conosciute (osservando le immagini effettivamente salvate in wp-content/uploads
) capirai cosa intendo. Nonostante il nome, a volte restituirà immagini più grandi, ma gli elementi altezza e larghezza dell'array dovrebbero essere impostati ai valori forniti, oppure a qualche tentativo di approssimazione scalata (così sembra) se quei valori sono estremamente inaccurati. Non posso dire se questo "ridimensionamento" sia ciò che sta accadendo nel tuo caso, ma potrebbe essere e sembra probabile.
Facciamo un esempio. Ho un'immagine salvata come 150x150, 293x300 e a dimensione intera. Questo...
var_dump(wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array(20, 20)));
... restituisce un array con l'immagine 150x150 e le dimensioni che ho fornito - 20x20. Tuttavia questo...
var_dump(wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array(200, 250)));
... restituisce l'URL dell'immagine 150x150 ma con dimensioni 200x204. Non è ciò che ho fornito. I valori delle dimensioni sono stati modificati da qualche algoritmo. Ulteriori indagini suggeriscono che image_constrain_size_for_editor
sia il candidato più probabile.
Potresti anche verificare se qualcosa ha applicato una funzione al filtro image_downsize
, poiché ciò sovrascriverebbe completamente la funzione.

Grazie per la tua risposta. Buona lettura comunque, ma il problema è che la dimensione non cambia affatto. Ho incluso un selettore di dimensione per l'immagine in evidenza. Non sembra provenire da my_own_size_function()
semplicemente perché ottengo quello che voglio quando faccio print_r
