So zeigen Sie mehrere Post-Meta-Schlüssel / Meta-Werte durch SQL-Abfrage an

Ich habe keine Lösung gefunden, um mehrere postmeta meta_key / meta_values ​​durch SQL-Abfrage eines Beitrags anzuzeigen. Ich verwende das Advanced Custom Fields (ACF) -Plugin auf einer anderen Website und versuche, den Inhalt der Beiträge auf einer sekundären Website zu ziehen. Alles wird gut angezeigt, außer dass es nicht mehr meta_values ​​anzeigen kann.

Hier ist mein Code:

$mydb = new wpdb('database_name','database_user','database_pw','database_host'); $rows = $mydb->get_results(" SELECT P.ID, P.post_title, P.post_content, P.post_author, meta_value FROM wp_posts AS P LEFT JOIN wp_postmeta AS PM on PM.post_id = P.ID WHERE P.post_type = 'post' and P.post_status = 'publish' and meta_key = 'job_title' and meta_key = 'company_email' //2nd meta_key I need to work ORDER BY P.post_date DESC "); foreach ($rows as $row) : echo $row->meta_value; endforeach; 

Wie Sie sehen können, bin ich in der Lage, nur einen Meta-Schlüssel / Meta-Wert abzurufen, aber mehrere Felder anzuzeigen.

Solutions Collecting From Web of "So zeigen Sie mehrere Post-Meta-Schlüssel / Meta-Werte durch SQL-Abfrage an"

Ändern Sie where-Klausel mit or

 SELECT P.ID, P.post_title, P.post_content, P.post_author, meta_value FROM wp_posts AS P LEFT JOIN wp_postmeta AS PM on PM.post_id = P.ID WHERE P.post_type = 'post' and P.post_status = 'publish' and ( meta_key = 'job_title' or meta_key = 'company_email' ) ORDER BY P.post_date DESC 

aber diese sql wird denselben Post in 2 Zeilen für Ihren Metaschlüssel und Wert zurückgeben; und du wirst etwas wie bekommen

 +-----+------------+--------------+-------------+----------+------------+ | ID | post_title | post_content | post_author | meta_key | meta_value | +-----+------------+--------------+-------------+----------+------------+ | 10 | Post Title | Post Content | 1 | key1 | value1 | +-----+------------+--------------+-------------+----------+------------+ | 10 | Post Title | Post Content | 1 | key2 | value2 | +-----+------------+--------------+-------------+----------+------------+ 

und wenn Sie den Metaschlüssel als Spalte und Metawert als Wert der Entsprechungsspalte benötigen, müssen Sie die Reihe zu Spalte schwenken

 SELECT P.ID, P.post_title, P.post_content, P.post_author, MAX(IF(PM.meta_key = 'job_title', PM.meta_value, NULL)) AS job_title, MAX(IF(PM.meta_key = 'company_email', PM.meta_value, NULL)) AS company_email FROM wp_posts AS P LEFT JOIN wp_postmeta AS PM on PM.post_id = P.ID WHERE P.post_type = 'post' and P.post_status = 'publish' ORDER BY P.post_date DESC 

Dies wird das Ergebnis als eine einzelne Zeile wie folgt zurückgeben

 +-----+------------+--------------+-------------+-----------+---------------+ | ID | post_title | post_content | post_author | job_title | company_email | +-----+------------+--------------+-------------+-----------+---------------+ | 10 | Post Title | Post Content | 1 | job title | company@email | +-----+------------+--------------+-------------+-----------+---------------+