Obține URL-ul imaginilor produsului (WooCommerce)
Ce se întâmplă când un produs (post) nu are un guid, deoarece folosește aceeași imagine cu un alt produs?
De exemplu:
Interogare1:
select guid from wp_posts where post_type='attachment' and post_parent=num
Nu returnează nimic.
Interogare2:
select guid from wp_posts where ID=num
Returnează URL-ul produsului.
În acest caz, cum pot găsi URL-ul imaginii pentru acel produs?

În primul rând, GUID-ul nu este URL-ul. Este un "identificator global unic" (globally unique identifier). WordPress folosește URL-ul în acest scop, dar accesarea lui nu este o metodă sigură de a obține URL-ul pentru orice (aceasta a fost o idee proastă, dar se păstrează din motive de compatibilitate retroactivă).
Nu este posibil să interoghezi direct URL-ul imaginii din baza de date. URL-ul complet nu este stocat acolo. Dar dacă ai ID-ul unui produs și vrei să obții URL-ul imaginii sale, poți face asta:
$product = wc_get_product( $product_id );
$image_id = $product->get_image_id();
$image_url = wp_get_attachment_image_url( $image_id, 'full' );

Mulțumesc, dar dacă vreau să o găsesc în baza de date, adică în ce tabel o pot găsi?

Cum am menționat, URL-ul complet nu este stocat în baza de date. Este generat programatic pe baza câtorva factori, cum ar fi URL-ul site-ului, structura permalink-urilor, argumentele de rescriere ale tipului de postare, structura directorului de încărcare și setările din wp-config. Trebuie să îl obții folosind o funcție precum cea din răspunsul meu.

Am văzut undeva o interogare pentru a prelua imaginile produselor din baza de date.
Poate te va ajuta.
Doar setează parametrii necesari în funcție de cerințele tale.
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';

Pentru referință, executați această interogare în baza de date:
SELECT * FROM `wp_postmeta` WHERE meta_key IN ('_wp_attached_file', '_wp_attachment_backup_sizes', '_wp_attachment_metadata', '_thumbnail_id')
Dacă rulați interogarea de mai sus doar cu "_wp_attached_file", veți obține calea din directorul de încărcare.
Sper că vă ajută..
