wp_get_attachment_image_src() non restituisce ciò che voglio - Risoluzione

30 lug 2013, 17:33:43
Visualizzazioni: 17.5K
Voti: 0

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.

0
Tutte le risposte alla domanda 2
2

Modifica la funzione my_own_size_function(); in array(600, 400)

$image_attributes = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array(600, 400));
30 lug 2013 17:47:22
Commenti

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);

JMau JMau
30 lug 2013 17:51:02

E hai l'immagine caricata in quella dimensione?

Pontus Abrahamsson Pontus Abrahamsson
30 lug 2013 17:55:45
2

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.

30 lug 2013 18:23:47
Commenti

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

JMau JMau
30 lug 2013 18:37:03

Immagino di essere l'anello più debole! Ho controllato gli upload e stavo lavorando con l'unica immagine che non aveva la dimensione appropriata.

JMau JMau
30 lug 2013 18:43:13