Comment interroger par format de message dans WordPress 3.1

10

J'essaie d'interroger toutes les publications avec le format "publication". J'ai ajouté les formats de publication à mon functions.php avec

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

J'ai sélectionné "quote" comme format de publication dans l'admin. Le dernier exemple sous Taxonomy_Parameters montre comment afficher les publications au format "quote", mais lorsque je l'exécute dans mon thème aucun message n'est retourné. Voici le code:

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

Quand je viens d'interroger tous les posts et de placer

echo get_post_format();

dans la boucle, il renvoie le mot "quote" sur le front-end. En outre, lorsque je var_dump () la requête, je ne vois rien dans le tableau concernant le format de publication.

Quelqu'un sait-il s'il est possible d'interroger par format postal? Si oui comment?

EDIT - Voir 5 commentaires sous la réponse de Bainternet: C'est le code trouvé sur index.php du thème Twenty d'une nouvelle installation qui tente de renvoyer des guillemets de type de format. Je retourne "non" au lieu de "citation". Pouvez-vous voir quelque chose que je devrais changer.

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 - Il semble que le codex WordPress ait maintenant été modifié et que la partie relative aux paramètres de taxonomie ne se trouve que dans le cache de Google.

EDIT 3 - CODE DE TRAVAIL FINAL

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

Les vingt-dix éditions de la première édition seront ...

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(); ?>
    
posée PNMG 01.03.2011 - 23:14

2 réponses

7

Ce code est incorrect! Vous avez

'taxonomy' => 'post-format'

Mais il faut vraiment que ce soit:

'taxonomy' => 'post_format'

Sans le trait de soulignement, la requête sera invalide. Je viens de tester cela sur mon installation WordPress 3.1 après m'être tiré les cheveux pendant des heures.

J'espère que ça aide !!

    
réponse donnée Jared White 30.03.2011 - 04:13
2

dans tax_query "termes" accepte le tableau, vous devez donc placer post-format-quote dans un tableau comme celui-ci:

$args = array(
  'tax_query' => array(
    array(
      'taxonomy' => 'post-format',
      'field' => 'slug',
      'terms' => array('post-format-quote')
    )
  )
);
query_posts( $args );
    
réponse donnée Bainternet 01.03.2011 - 23:31

Lire d'autres questions sur les étiquettes