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

10

Estou tentando consultar todas as postagens com um formato de postagem de "quote". Eu adicionei os formatos de post ao meu functions.php com

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

Selecionei "quote" como o formato da postagem no admin. O último exemplo em Taxonomy_Parameters mostra como exibir posts que têm o formato 'quote', mas quando eu o executo no meu tema nenhum post é retornado. Aqui está o código:

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

Quando apenas pesquiso todos os posts e coloco

echo get_post_format();

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

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

EDIT - Veja 5 comentários sob a resposta da Bainternet: Este é o código encontrado no index.php do tema vigésimo de uma nova instalação que tenta retornar aspas do tipo de formato. Eu volto 'não' em vez de 'citação'. Você pode ver qualquer coisa que eu deveria 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(); ?>

EDIT 2 - Parece que o WordPress Codex foi alterado e a parte em Taxonomy Parameters só é encontrada 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 );

As vinte e dez edições da primeira edição serão ...

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(); ?>
    
por PNMG 01.03.2011 / 23:14

2 respostas

7

Este código está incorreto! Você tem

'taxonomy' => 'post-format'

Mas 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 !!

    
por Jared White 30.03.2011 / 04:13
2

em tax_query "terms" aceita array, então você precisa colocar post-format-quote em um array como este:

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => array('post-format-quote')
    )
  )
);
query_posts( $args );
    
por Bainternet 01.03.2011 / 23:31