Obține URL-ul imaginilor produsului (WooCommerce)

21 mai 2019, 17:48:37
Vizualizări: 41K
Voturi: 10

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?

0
Toate răspunsurile la întrebare 3
2
16

Î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' );
21 mai 2019 18:23:11
Comentarii

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

user8761967 user8761967
23 mai 2019 10:29:16

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.

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

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';
31 dec. 2019 09:31:10
0

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ă..

17 oct. 2019 00:13:48