2016-06-21 8 views
0

Hallo, ich weiß, diese Frage scheint bekannt, aber bitte lesen Sie die vollständige Frage. Ich möchte Wordpress Titel, vorgestellten Bild, Inhalt mit einer MySQL-Abfrage erhalten. Ich habe viele Abfragen versucht, aber ich bekomme Fehler.Wie bekomme ich Wordpress Post mit Titel, Inhalt und featured Bild mit MySQL Abfrage

gibt es keinen Fehler und MySQL-Abfrage gibt leer zurück. Ich benutze Wordpress Version 4.5.2.

Ich habe diese Abfrage gefunden, aber es gibt mir ein leeres Ergebnis.

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 
    )LEFT JOIN 
    wp_term_relationships wtr 
    ON 
(
    object_id=p1.id 
    ) 
    WHERE 
    p1.post_status='publish' 
    AND p1.post_type='post' 
    AND 'term_taxonomy_id'='454' 
    ORDER BY p1.post_date DESC 
    LIMIT 0,10 

Wie kann ich diese Abfrage verbessern, um Ergebnisse zurückzugeben?

+0

Sie sollten uns Ihre Datenbankstruktur zeigen und auch selbst überprüfen, ob Ihr MySQL beim Ausführen der Abfrage irgendwelche Fehlermeldungen zurückgibt. – Martin

+0

Welche Version von WordPress verwenden Sie? – Martin

+0

gibt es keinen Fehler und mysql Abfrage gibt leer und Wordpress-Version ist 4.5.2 –

Antwort

0

Sie haben einen Fehler in SQL WHERE-Klausel:

AND 'term_taxonomy_id'='454' 

Der String 'term_taxonomy_id' wird nie auf den String '454' gleich sein.

Zuerst, um zu überprüfen, entfernen Sie diese Bedingung vollständig aus Ihrer Abfrage. Wenn Sie die Ergebnisse zurück und Sie immer noch von diesem taxonomy_id filtern möchten, dann entfernen Sie die einzelnen Anführungszeichen um den Feldname:

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 
     ) 
LEFT JOIN wp_term_relationships wtr ON (object_id = p1.id) 
WHERE p1.post_status = 'publish' 
    AND p1.post_type = 'post' 
    AND term_taxonomy_id = '454' 
ORDER BY p1.post_date DESC LIMIT 0,10 

In MySQL Sie Backticks um Feldnamen verwenden können, aber einfache Anführungszeichen sind um Stringliterale verwendet . Wenn Sie diese vermischen, werden Sie in Schwierigkeiten geraten.

Wenn Sie immer noch keine Ergebnisse erhalten, ziehen Sie in Betracht, die Einschränkungen p1.post_status und p1.post_type zu entfernen, um zu sehen, ob Sie Ergebnisse erhalten und entsprechend anpassen.

+0

danke, mein Herr. funktionierte wie ein Charme! .. tue mir noch einen Gefallen, wie kann ich dies durch mehrere Kategorie ID tun? –

+0

Ich bin mir nicht sicher, was eine Kategorie ID ist. Es ist Jahre her, dass ich zuletzt mit Wordpress gearbeitet habe. Jedoch ... wenn Sie dies für mehrere Taxonomien tun wollten, könnten Sie die 'und term_taxonomy_id = '454'' in etwas wie' und term_taxonomy_id in (' 454 ',' 455 ',' 456 ') ändern 'Die gleiche Logik würde arbeite für was auch immer die 'category id' ist (Angenommen, es ist ein Feld in einer der Tabellen, die bereits verbunden sind. – JNevill

Verwandte Themen