Wie bekomme ich einen Meta-Wert von allen Posts?

Ich suchte eine Weile, aber ich fand keine Lösung. Ich habe die hier aufgelisteten functionen benutzt. Es gibt so etwas aus:

Array ( [0] => 15 [1] => 30 [2] => 50 ) 

Aber ich möchte so etwas:

 Array ( [post_id_1] => 15 [post_id_2] => 30 [post_id_3] => 50 ) 

Und das ist die $ wp-Abfrage, die in der function verwendet wird:

 function get_meta_values( $key = '', $type = 'post', $status = 'publish' ) { global $wpdb; if( empty( $key ) ) return; $r = $wpdb->get_col( $wpdb->prepare( " SELECT pm.meta_value FROM {$wpdb->postmeta} pm LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id WHERE pm.meta_key = '%s' AND p.post_status = '%s' AND p.post_type = '%s' ", $key, $status, $type ) ); return $r; } 

Solutions Collecting From Web of "Wie bekomme ich einen Meta-Wert von allen Posts?"

get_col() function gibt nur eine Spalte als Array zurück. Um zwei Spaltenergebnisse zu erhalten, können wir get_results() , was ein Array von Objekten get_results()

Welche weiter kann mit foreach-Schleife in die erforderliche Struktur umgewandelt werden.

Beispiel –

 function get_meta_values( $key = '', $type = 'post', $status = 'publish' ) { global $wpdb; if( empty( $key ) ) return; $r = $wpdb->get_results( $wpdb->prepare( " SELECT p.ID, pm.meta_value FROM {$wpdb->postmeta} pm LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id WHERE pm.meta_key = '%s' AND p.post_status = '%s' AND p.post_type = '%s' ", $key, $status, $type )); foreach ( $r as $my_r ) $metas[$my_r->ID] = $my_r->meta_value; return $metas; } 

(Die modifizierte Version Ihres Beispiels)

WordPress hat die function get_metadata das bekommt alle meta des Objekts (Post, term, user …)

Benutz einfach

 get_metadata( 'post', 15 );