2013-09-28 10 views
7

ich außerhalb Wordpress diese Abfrage in einer PHP-Skript bin mit abzurufen Einträgen mit ihren vorgestellten Bildernabrufen Wordpress Beiträge mit ausgewähltem Bild über 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' 

... und es funktioniert gut.

Aber auf diese Weise bekomme ich volle Bild-URL. Ich muss 'Medium' oder 'Thumbnail' Größen dieser Bilder abrufen.

¿Irgendeine Möglichkeit, dies zu erreichen?

Antwort

1

Sie diese Abfrage für Miniaturgröße kann versuchen, für mittleres Bild i über die richtige Größe nicht sicher ist, ob Sie die Dimension dann benutzerdefinierten alias wissen machen, wie ich unter Verwendung der SUBSTRING_INDEX machte dann die Erweiterung der Datei zu erhalten habe ich verwendet CONCAT Funktion mit der post_name Spalte und die Abmessungen + Erweiterung, in ähnlicher Weise können Sie dies für mittlere Größe tun, wie alle Upload in den Upload-Ordner können Sie den generierten Thumbs-Namen sind original attachment name + -150x150 or other dimensions so aus dieser Logik Ihre Daumen erhalten den Namen mit den Abmessungen Die Anhänge des Posts werden in post_meta mit der Post-ID gespeichert und haben den Schlüsselnamen _wp_attachment_metadata, der alle Informationen über verschiedene Dateigrößen speichert, aber in einer serialisierten Form, so dass Sie in mysql query nicht von unsisalisieren können e die Daten

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' 

Diese Abfrage funktioniert für mich thumbnail of Größe zu erhalten 150 * 150 hoffen, dass es auch für Sie arbeitet

2

hier ist die Antwort:

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

Die folgende Abfrage adaptierte von oben löste ich mein spezielles Problem, das einfach darin bestand, die letzten vier Posts und ihre vorgestellten Bilder zu packen. Plus die POST_NAME, von dem konnte ich von dort eine hübsche 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 

Natürlich konstruieren ist es einfach, ein Auszug usw. mit machen:

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 

} 
Verwandte Themen