¿Cómo hago consultas por formato de publicación en WordPress 3.1?

10

Estoy tratando de consultar todas las publicaciones con un formato de publicación de 'cita'. He agregado los formatos de publicación a mis functions.php con

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

He seleccionado 'presupuesto' como formato para la publicación en el administrador. El último ejemplo en Taxonomy_Parameters muestra cómo mostrar las publicaciones que tienen el formato de 'cita' pero cuando lo ejecuto en mi tema no se devuelve ninguna publicación. Aquí está el código:

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

Cuando solo consulto todas las publicaciones y coloco

echo get_post_format();

en el bucle devuelve la palabra 'cita' en el front-end. Además, cuando var_dump () la consulta no veo nada en la matriz sobre el formato de publicación.

¿Alguien sabe si es posible consultar por formato de publicación? ¿Si es así, cómo?

EDITAR: vea 5 comentarios en la respuesta de Bainternet: este es el código que se encuentra en index.php del tema vigésimo de una instalación nueva que intenta devolver comillas de tipo de formato. Devuelvo 'no' en lugar de 'cita'. ¿Puedes ver algo que deba cambiar?

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(); ?>

EDITAR 2: parece que el Codex de WordPress ahora ha cambiado y la parte de Parámetros de taxonomía solo se encuentra en el caché de Google.

EDITAR 3 - CÓDIGO DE TRABAJO FINAL

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

La edición vigésimo diez de la primera edición 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
fuente

Respuestas:

7

Este código es incorrecto! Tienes

'taxonomy' => 'post-format'

Pero realmente necesita ser:

'taxonomy' => 'post_format'

Sin el guión bajo, la consulta será inválida. Acabo de probar esto en mi instalación de WordPress 3.1 después de arrancarme el cabello durante horas.

¡¡Espero que ayude!!

Jared White
fuente
Muchas gracias por captar eso. Podría jurar que copié el código original directamente de la página del Codex. (Quizás también estuvo mal allí alguna vez). Funciona ahora. Además de cambiarlo a post_format, también necesitaba cambiar 'terms' => 'quote' de nuevo a 'terms' => 'post-format-quote'. Para cualquier otra persona interesada, consulte Editar 3 de la publicación original para el código final.
PNMG
Claro, me alegro de haber podido ayudar. :)
Jared White
2

en tax_query"términos" acepta la matriz, por lo que debe colocar post-format-quoteuna matriz como esta:

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => array('post-format-quote')
    )
  )
);
query_posts( $args );
Bainternet
fuente
¿Alguien ha intentado esto y consiguió que funcione? Agregué la parte de matriz y todavía no devolvió nada. ¿Post-format-quote es el slug correcto para poner en la matriz?
PNMG
no, no es necesario que coloque el formato de publicación como "cita" y no como formato de
publicación
¿Quiere decir que debería poner 'terms' => array ('quote') ya que eso es lo que he definido como cita en la función add_theme_support? También probé eso. Aún no hay suerte.
PNMG
bien 'terms' => array ('quote') está trabajando en mí, intenta hacer eco del formato de publicación con 'echo get_post_format ();' y mira lo que obtienes
Bainternet
Ok, entonces cuando me hago eco de eso obtengo 'cita'. En un momento de desesperación, apagué todos los complementos y volví al tema predeterminado de Twenty, y creé 3 publicaciones de prueba, una con un formato de cita. He actualizado el archivo functions.php para agregar una cita a la llamada add_theme_support y actualicé index.php para usar el siguiente código: [ver edición en la parte inferior de la publicación original]
PNMG