Como faço para consultar por formato de postagem no WordPress 3.1

10

Estou tentando consultar todas as postagens com um formato de 'citação'. Adicionei os formatos de postagem às minhas funções.php com

add_theme_support( 'post-formats', array( 'image', 'video', 'gallery', 'quote' ) );

Eu selecionei 'quote' como o formato da postagem no administrador. O último exemplo em Taxonomy_Parameters mostra como exibir postagens que têm o formato 'quote', mas quando eu o executo no meu tema, nenhuma postagem é retornada. Aqui está o código:

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => 'post-format-quote'
    )
  )
);
query_posts( $args );

Quando eu apenas consulta todas as postagens e coloco

echo get_post_format();

no loop, ele retorna a palavra 'quote' no front-end. Além disso, quando var_dump () a consulta não vejo nada na matriz sobre o formato de postagem.

Alguém sabe se é possível consultar por formato de postagem? Se sim, como?

EDIT - Veja 5 comentários na resposta de Bainternet: Este é o código encontrado no index.php do tema twentyten de uma nova instalação tentando retornar aspas de tipo de formato. Retorno 'no' em vez de 'quote'. Você pode ver qualquer coisa que eu deva mudar.

get_header(); ?>
<div id="container">
  <div id="content" role="main">
    <?php $args = array(
      'tax_query' => array(
        array(
          'taxonomy' => 'post-format',
          'field' => 'slug',
          'terms' => array('quote')
        )
      )
    );
    query_posts( $args );
    if ( have_posts() ) : while ( have_posts() ) : the_post();
      echo get_post_format();
    endwhile; else:
      echo 'no';
    endif;
    wp_reset_query();      
    ?>
  </div><!-- #content -->
</div><!-- #container -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

EDIÇÃO 2 - Parece que o Codex do WordPress foi alterado e a parte em Parâmetros de taxonomia é encontrada apenas no cache do Google.

EDIT 3 - CÓDIGO FINAL DE TRABALHO

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post_format',
      'field' => 'slug',
      'terms' => 'post-format-quote'
    )
  )
);
query_posts( $args );

A edição de vinte e dez da primeira edição será ...

get_header(); ?>
<div id="container">
  <div id="content" role="main">
    <?php $args = array(
      'tax_query' => array(
        array(
          'taxonomy' => 'post_format',
          'field'    => 'slug',
          'terms'    => 'post-format-quote'
        )
      )
    );
    query_posts( $args );
    if ( have_posts() ) : while ( have_posts() ) : the_post();
      the_title();
      echo get_post_format();
      echo '<br />';
    endwhile; else:
      echo 'no';
    endif;
    wp_reset_query();      
    ?>
  </div><!-- #content -->
</div><!-- #container -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
PNMG
fonte

Respostas:

7

Este código está incorreto! Você tem

'taxonomy' => 'post-format'

Mas ele realmente precisa ser:

'taxonomy' => 'post_format'

Sem o sublinhado, a consulta será inválida. Acabei de testar isso na minha instalação do WordPress 3.1 depois de puxar meu cabelo por horas.

Espero que ajude!!

Jared White
fonte
Muito obrigado por entender isso. Eu poderia jurar que copiei o código original diretamente da página do Codex. (Talvez estivesse errado lá também ao mesmo tempo.) Funciona agora. Junto com a alteração para post_format, eu também precisei mudar 'terms' => 'quote' de volta para 'terms' => 'post-format-quote'. Para qualquer pessoa interessada, consulte o Edit 3 da postagem original para obter o código final.
PNMG 30/03/11
Claro, feliz por ter sido capaz de ajudar. :)
Jared Branco
2

em tax_query"termos" aceita matriz, então você precisa colocar post-format-quoteuma matriz como esta:

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => array('post-format-quote')
    )
  )
);
query_posts( $args );
Bainternet
fonte
Alguém já tentou isso e conseguiu que ele funcionasse. Eu adicionei a parte da matriz e ela ainda não retornou nada. A cotação pós-formato é a lesma correta para colocar na matriz?
PNMG
não o seu contrário, você precisa colocar o formato de post-it auto like "citação" e não pós-format-quote
Bainternet
Você quer dizer que eu deveria colocar 'terms' => array ('quote'), pois é isso que defini como citação na função add_theme_support? Eu tentei isso também. Ainda sem sorte.
PNMG 01/03
well 'terms' => array ('quote') está funcionando comigo, tente repetir o formato do post com 'echo get_post_format ();' e veja o que você ganha
Bainternet
Ok, então quando eu eco que recebo 'citação'. Em um momento de desespero, desliguei todos os plugins e voltei ao tema padrão vinte e criei três postagens de teste, uma com um formato de citação. Eu atualizei o arquivo functions.php para adicionar citação para a chamada add_theme_support e atualizado index.php para usar o seguinte código: [ver edição na parte inferior do post original]
PNMG