Obtener la Imagen Destacada mediante consulta SQL directa

13 abr 2012, 11:18:51
Vistas: 27.4K
Votos: 8

Sé que se pueden usar los métodos de WordPress para obtener una imagen destacada, sin embargo, en este proyecto en particular necesito obtener la imagen destacada mediante una consulta mysql. ¿Alguien puede orientarme en la dirección correcta? Gracias.

Esto es lo que tengo hasta ahora pero mi consulta no está funcionando. Tengo el $post->id almacenado como una variable llamada $da_id

            $Featured_image = $wpdb->get_results("
            SELECT *
            FROM net_5_postmeta  
            INNER JOIN net_5_posts ON net_5_postmeta.post_id=net_5_posts.ID 
            WHERE post_parent = $da_id
            AND meta_key = '_wp_attached_file' 
            ORDER BY post_date 
            DESC LIMIT 15",'ARRAY_A');
0
Todas las respuestas a la pregunta 2
1
15

Una solución relacionada, para consultar publicaciones SIN proporcionar un ID de publicación (ordenadas por fecha de publicación y usando el prefijo de base de datos wp_):

    SELECT
        p1.*,
        wm2.meta_value
    FROM 
        wp_posts p1
    LEFT JOIN 
        wp_postmeta wm1
        ON (
            wm1.post_id = p1.id 
            AND wm1.meta_value IS NOT NULL
            AND wm1.meta_key = "_thumbnail_id"              
        )
    LEFT JOIN 
        wp_postmeta wm2
        ON (
            wm1.meta_value = wm2.post_id
            AND wm2.meta_key = "_wp_attached_file"
            AND wm2.meta_value IS NOT NULL  
        )
    WHERE
        p1.post_status="publish" 
        AND p1.post_type="post"
    ORDER BY 
        p1.post_date DESC
10 may 2012 19:39:00
Comentarios

No es exactamente lo que se preguntó, pero para mí esta respuesta es más útil... ¡gracias!

vicenteherrera vicenteherrera
29 oct 2014 22:18:33
3
$Featured_image = $wpdb->get_results("
    SELECT p.*
      FROM net_5_postmeta AS pm
     INNER JOIN net_5_posts AS p ON pm.meta_value=p.ID 
     WHERE pm.post_id = $da_id
       AND pm.meta_key = '_thumbnail_id' 
     ORDER BY p.post_date DESC 
     LIMIT 15
",'ARRAY_A');
Traducción de los comentarios: - La variable `$Featured_image` obtendrá los resultados de la consulta SQL - La consulta busca imágenes destacadas asociadas a un post específico - Se hace un JOIN entre las tablas postmeta y posts - Filtra por el ID del post (`$da_id`) y por la clave meta '_thumbnail_id' - Ordena por fecha de publicación descendente - Limita a 15 resultados - Devuelve los resultados como un array asociativo ('ARRAY_A') Traducción de strings dentro del código: - `SELECT` → `SELECCIONAR` (aunque normalmente se deja en inglés en SQL) - `FROM` → `DESDE` (se suele dejar en inglés) - `INNER JOIN` → `UNIÓN INTERNA` (se suele dejar en inglés) - `WHERE` → `DONDE` (se suele dejar en inglés) - `AND` → `Y` (se suele dejar en inglés) - `ORDER BY` → `ORDENAR POR` (se suele dejar en inglés) - `DESC` → `DESCENDENTE` (se suele dejar en inglés) - `LIMIT` → `LÍMITE` (se suele dejar en inglés) Nota: En la práctica, las palabras clave SQL generalmente se mantienen en inglés incluso en entornos de habla hispana.
13 abr 2012 11:25:48
Comentarios

¡Eugene, me salvaste la vida! Funciona de maravilla, ¡MUCHAS GRACIAS!

uknowit2 uknowit2
13 abr 2012 15:18:00

¡De nada! Marca la respuesta correcta y vótala positivamente.

Eugene Manuilov Eugene Manuilov
13 abr 2012 15:37:59

Gracias nuevamente Eugene, marqué como correcta pero desafortunadamente no tengo suficiente reputación para votar positivamente, pero estoy seguro que esto ayudará a otros. El código anterior es particularmente útil en un entorno MU cuando necesitas consultar imágenes destacadas de otros blogs. Me encanta. Ahora solo necesito averiguar cómo traer la versión miniatura de la imagen destacada.

uknowit2 uknowit2
14 abr 2012 14:05:53