get_results usando wpdb

12

Estou tentando recuperar informações no meu banco de dados. Eu queria exibir tudo pagesusando essa declaração, mas estou ficando em brancoARRAY

global $wpdb;
$result = $wpdb->get_results (
        "
        SELECT * 
        FROM  $wpdb->wp_posts 
        WHERE post_type =  'page'
        "
        );

echo $result; // display data

Resultado:

  ARRAY

EDIT : Depois de alterar as sugestões abaixo, agora estou usando isso. mas ainda não obtive resultados:

global $wpdb;

    $posts = $wpdb->wp_posts;
    $result = $wpdb->get_results( " SELECT * FROM  $posts WHERE 'post_type' =  'page' "  );

    foreach ($result as $page) {
            echo $page->ID.'<br/>';

    }
user1933824
fonte
Tente embrulhar $wpdb->wp_postscom chaves, por exemplo. {$wpdb->wp_posts}..
t31os

Respostas:

18
global $wpdb;

$result = $wpdb->get_results ( "
    SELECT * 
    FROM  $wpdb->posts
        WHERE post_type = 'page'
" );

foreach ( $result as $page )
{
   echo $page->ID.'<br/>';
   echo $page->post_title.'<br/>';
}
Balas
fonte
oi @balamurugan, eu tentei sua resposta, mas ainda não estou obtendo nenhum resultado. você pode ver minha parte Editar acima.
user1933824
na verdade o que você está recebendo e você remove ... do meu código. Eu testei-o e recebendo toda id página
Balas
estou usando minha parte de edição como visto acima da minha postagem original. Eu tentei echo $resultapenas para ter certeza de que estou recuperando dados do queryque recebo é imprimir Array. Quando eu uso, echo $page->IDnão recebo nada. im realmente não sei porquê ..
user1933824
você simplesmente copia e cola esse código completamente. Isso é tudo o que fazer para obter o resultado.
Balas
sim funcionou! Quando tento revisar meu código e o seu, a única diferença que vi é que $tablename = $wpdb->prefix.'posts';essa parte não estava na documentação do codex. você pode me explicar por que isso funciona?
user1933824
3

Você tem um pequeno mal-entendido:

Ao chamar $wpdb, você obtém uma lista de propriedades que contêm os nomes principais das tabelas:

// The custom prefix from wp-config.php
// only needed for custom tables
$wpdb->prefix

// Tables where you don't need a prefix: built in ones:
$wpdb->posts
$wpdb->postmeta
$wpdb->users

Portanto, sua consulta final ficaria assim :

$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page'" );
kaiser
fonte
11
+1 por isso, obrigado. mas eu precisava dar crédito à pessoa que me respondeu primeiro, ele já forneceu a resposta correta, apenas não consegui seguir as instruções dele.
user1933824
Certo. Sidenote: Como afirmei, o $wpdb->prefixnão deve ser usado para tabelas internas. Basta ligar diretamente para eles. Corrigida, esta é a resposta dele também.
kaiser
1

Tente o seguinte código. Eu enfrentei o problema semelhante e o resolvi removendo o $ wpdb do campo 'FROM'.

global $wpdb;
$result = $wpdb->get_results (
            "
            SELECT * 
            FROM  wp_posts 
            WHERE post_type =  'page'
            "
            );

echo $result; // display data
Wahid Kadwaikar
fonte