Recuperando campos personalizados com $ wpdb-> get_results

Estou tentando usar $wpdb->get_results para recuperar uma matriz de todas as postagens, incluindo campos personalizados. Eu posso recuperar as colunas meta_key e meta_value como esta:

 [meta_key] => state [meta_value] => california 

mas estou tentando listá-los no object como este:

 [meta_key] => meta_value [state] => california [city] => san francisco 

A pergunta:

 global $wpdb; $query = " SELECT ID, post_date, post_title, post_content, guid, meta_key, meta_value FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) "; $results = $wpdb->get_results($query); foreach($results as $result) { print_r($result); } 

É possível usar um alias e / ou uma subconsulta para conseguir isso?

 SELECT ID, post_date, post_title, post_content, guid, meta_value AS (subquery here??) 

Solutions Collecting From Web of "Recuperando campos personalizados com $ wpdb-> get_results"

Note, antes de ir mais longe: tome cuidado com portabilidade e segurança:

 function wpse50056_get_post_meta() { global $wpdb; $results = $wpdb->get_results( " SELECT ID, post_date, post_title, post_content, meta_key, meta_value FROM {$wpdb->posts} INNER JOIN {$wpdb->postmeta} ON ( $wpdb->posts.ID = {$wpdb->postmeta}.post_id ) " ); foreach( $results as $result ) { printf( '
%s

', htmlspecialchars( var_export( $result, true ) ) ); } } add_action( 'shutdown', 'wpse50056_get_post_meta' );

Apenas por clareza, para não obter as cotações extras sobre as quais o benhass estava falando (eu ainda os consigo com o código fornecido pelo kaiser e o WP 3.7.1), não use o método de preparação (ok neste caso, como nós use somente os parâmetros fornecidos pelo próprio object $ wpdb):

 function wpse50056_get_post_meta() { global $wpdb; $query = " SELECT ID, post_date, post_title, post_content, meta_key, meta_value FROM $wpdb->posts INNER JOIN $wpdb->postmeta ON ( $wpdb->posts.ID = $wpdb->postmeta.post_id) "; $results = $wpdb->get_results( $query ); foreach( $results as $result ) { echo '
'; print_r( $result ); echo '

'; } } add_action( 'shutdown', 'wpse50056_get_post_meta' );

Mas, claro, lembre-se, assim que você usa outros parâmetros na consulta, o uso de $ wpdb-> prepare é recomendado para evitar a injeção de SQL.