2013-09-28 11 views
7

sto usando questa query in uno script PHP di fuori Wordpress per recuperare le voci con le loro immagini presentiRecuperare messaggi wordpress Foto di presentazione con via SQL

SELECT (SELECT guid FROM wp_posts WHERE id = m.meta_value) AS url 
FROM wp_posts p, wp_postmeta m 
WHERE p.post_type = 'post' 
AND p.post_status = 'publish' 
AND p.id = m.post_id 
AND m.meta_key = '_thumbnail_id' 

... e funziona benissimo.

Ma in questo modo ottengo l'URL dell'immagine a dimensione intera. Ho bisogno di recuperare le dimensioni "medie" o "miniatura" di queste immagini.

¿Un modo per raggiungere questo obiettivo?

risposta

1

È possibile provare questa query per dimensioni dell'anteprima, per l'immagine media non sono sicuro della giusta dimensione se si conosce la dimensione quindi creare alias personalizzati come ho fatto di seguito utilizzando il SUBSTRING_INDEX per ottenere l'estensione del file quindi ho usato Funzione CONCAT con la colonna post_name e le dimensioni + estensione, analogamente è possibile farlo per dimensioni medie, poiché tutto il caricamento va alla cartella di caricamento è possibile analizzare il nome del pollice generato sono original attachment name + -150x150 or other dimensions quindi da questa logica i pollici ottengono il nome con le dimensioni , gli allegati di post sono archiviati in post_meta con l'id del post e con il nome della chiave _wp_attachment_metadata che memorizza tutte le informazioni su diverse dimensioni di file ma in una forma serializzata così nella query mysql non puoi unserializ e i dati

SELECT  
CONCAT(p.`post_name` ,'-150x150.', 
SUBSTRING_INDEX((SELECT `guid` FROM wp_posts WHERE id = m.meta_value), '.', -1))  
AS `thumbnail`, 
(SELECT guid FROM wp_posts WHERE id = m.meta_value) AS `full` 
FROM wp_posts p, wp_postmeta m 
WHERE p.post_type = 'post' 
AND p.post_status = 'publish' 
AND p.id = m.post_id 
AND m.meta_key = '_thumbnail_id' 

Questa query funziona per me per ottenere miniatura del formato 150 * 150 auguro che funziona per voi anche

2

ecco la risposta:

SELECT TITRE,DESCR,URL, CONCAT(LEFT(IMG, LENGTH(IMG) - LOCATE('.', 
REVERSE(IMG))),'-150x150.',SUBSTRING_INDEX(IMG, '.', -1)) AS IMG FROM (
SELECT  
p.`post_title` AS TITRE, 
(SELECT `meta_value` FROM wp_postmeta WHERE `post_id` = p.`ID` and `meta_key`='_yoast_wpseo_metadesc') AS DESCR, 
p.`guid` AS URL, 
(SELECT `guid` FROM wp_posts WHERE id = m.meta_value) AS IMG 
FROM wp_posts p, wp_postmeta m 
WHERE p.post_type = 'post' 
AND p.post_status = 'publish' 
AND p.id = m.post_id 
AND m.meta_key = '_thumbnail_id') TT 

where DESCR is not null 
2

La seguente interrogazione, adattata da quanto sopra, ho risolto il mio particolare problema che era semplicemente quello di prendere gli ultimi quattro post e le loro immagini in primo piano. Inoltre il POST_NAME da cui ho potuto costruire una bella URL

SELECT title, post_name, date, content, CONCAT(LEFT(image, LENGTH(image) - LOCATE('.', REVERSE(image))),'-150x150.',SUBSTRING_INDEX(image, '.', -1)) AS image 
FROM (
    SELECT  
    p.post_title AS title, 
    p.post_status AS 'status', 
    p.post_date AS date, 
    p.post_content AS content, 
    p.post_name AS post_name, 
    (SELECT `guid` FROM wp_posts WHERE id = m.meta_value) AS image 
    FROM wp_posts p, wp_postmeta m 
    WHERE p.post_type = 'post' 
    AND p.post_status = 'publish' 
    AND p.id = m.post_id 
    AND m.meta_key = '_thumbnail_id' 
    ORDER BY date DESC 
    LIMIT 4 
) TT 

Naturalmente da lì è facile fare un estratto ecc utilizzando:

for($i=0; $i< $num_rows; $i++){ 
    $post_content = mysql_result($query_result, $i, "content"); 
    $post_excerpt = substr($post_content, 0, 90); 
    $post_permalink = $post_url . mysql_result($query_result, $i, "post_name"); 

    echo $post_permalink; //etc 

} 
Problemi correlati