Ottenere l'URL delle immagini dei prodotti (WooCommerce)

21 mag 2019, 17:48:37
Visualizzazioni: 41K
Voti: 10

Cosa succede quando un post (prodotto) non ha un GUID, perché ha la stessa immagine di un altro prodotto?

Per esempio:

Query1:

select guid from wp_posts where post_type='attachment' and post_parent=num 

Non restituisce nulla.

Query2:

select guid from wp_posts where ID=num

Restituisce l'URL del prodotto.

In questo caso, come posso trovare l'URL dell'immagine di quel prodotto?

0
Tutte le risposte alla domanda 3
2
16

Innanzitutto, il GUID non è l'URL. È un "identificatore univoco globale". WordPress utilizza l'URL a questo scopo, ma accedervi non è un modo affidabile per ottenere l'URL di qualsiasi elemento (questa era una cattiva idea, ma è mantenuta così per compatibilità con le versioni precedenti).

Non è possibile interrogare direttamente l'URL dell'immagine dal database. L'URL completo non è memorizzato lì. Ma se hai l'ID di un prodotto e vuoi ottenere l'URL della sua immagine puoi fare così:

$product   = wc_get_product( $product_id );
$image_id  = $product->get_image_id();
$image_url = wp_get_attachment_image_url( $image_id, 'full' );
21 mag 2019 18:23:11
Commenti

Grazie, ma se volessi trovarlo nel database, in quale tabella posso cercarlo?

user8761967 user8761967
23 mag 2019 10:29:16

Come ho detto, l'URL completo non è memorizzato nel database. Viene generato programmaticamente in base a diversi fattori, come l'URL del sito, la struttura dei permalink, gli argomenti di riscrittura del post type, la struttura della directory di upload e le impostazioni di wp-config. Devi ottenerlo usando una funzione come quella nella mia risposta.

Jacob Peattie Jacob Peattie
23 mag 2019 10:36:11
0

Ho visto da qualche parte una query per recuperare le immagini dei prodotti dal database.
Forse ti potrà essere utile.
Basta impostare i parametri richiesti in base alle tue esigenze.

SELECT p.ID,am.meta_value FROM wp_posts p LEFT JOIN wp_postmeta pm ON pm.post_id = p.ID AND pm.meta_key = '_thumbnail_id' LEFT JOIN wp_postmeta am ON am.post_id = pm.meta_value AND am.meta_key = '_wp_attached_file' WHERE p.post_type = 'product' AND p.post_status = 'publish';
31 dic 2019 09:31:10
0

Per tua referenza, esegui questa query nel database:

 SELECT * FROM  `wp_postmeta` WHERE meta_key IN ('_wp_attached_file', '_wp_attachment_backup_sizes',  '_wp_attachment_metadata',  '_thumbnail_id')

Se esegui la query sopra solo con "_wp_attached_file", otterrai il percorso dalla directory di upload.

Spero sia utile...

17 ott 2019 00:13:48