Obtener URL de imágenes de productos (WooCommerce)

21 may 2019, 17:48:37
Vistas: 41K
Votos: 10

¿Qué sucede cuando una entrada (producto) no tiene un guid porque comparte la misma imagen con otro producto?

Por ejemplo:

Consulta 1:

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

No devuelve nada.

Consulta 2:

select guid from wp_posts where ID=num

Devuelve la URL del producto.

En este caso, ¿cómo debería encontrar la URL de la imagen de ese producto?

0
Todas las respuestas a la pregunta 3
2
16

En primer lugar, el GUID no es la URL. Es un "identificador único global". WordPress utiliza la URL para este propósito, pero acceder a ella no es una forma confiable de obtener la URL de cualquier cosa (esto fue una mala idea, pero se mantiene así por compatibilidad con versiones anteriores).

No es posible consultar la URL de la imagen directamente desde la base de datos. La URL completa no se almacena allí. Pero si tienes el ID de un producto y deseas obtener la URL de su imagen, puedes hacer esto:

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

Gracias, pero si quiero encontrarlo desde la base de datos, ¿en qué tabla puedo encontrarlo?

user8761967 user8761967
23 may 2019 10:29:16

Como dije, la URL completa no está almacenada en la base de datos. Se genera programáticamente en base a varios factores, como la URL del sitio, la estructura de enlaces permanentes, los argumentos de reescritura del tipo de publicación, la estructura del directorio de subidas y los ajustes de wp-config. Necesitas obtenerla usando una función como la de mi respuesta.

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

He visto en algún lugar una consulta para obtener las imágenes de productos desde la base de datos.
Quizás te pueda ayudar.
Solo configura los parámetros requeridos según tus necesidades.

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

Para tu referencia, solo ejecuta esta consulta en la base de datos:

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

Y si ejecutas la consulta anterior solo con "_wp_attached_file", obtendrás la ruta desde el directorio de subidas.

Espero que te ayude...

17 oct 2019 00:13:48