Vous ne pouvez pas réellement passer un argument lié à la taxonomie à get_posts()
. (Edit: en fait, oui vous pouvez. Le Codex est juste quelque peu flou. En regardant la source, il get_posts()
est, en son cœur, juste un wrapper pour WP_Query()
.) Vous pouvez passer des méta clés / valeurs et des types de publication , mais pas des taxonomies telles que la publication format. Donc pour cette ligne:
$myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC');
Je recommanderais d'utiliser WP_Query()
plutôt que get_posts()
:
$myposts = new WP_Query( array(
'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array(
'post-format-aside',
'post-format-audio',
'post-format-chat',
'post-format-gallery',
'post-format-image',
'post-format-link',
'post-format-quote',
'post-format-status',
'post-format-video'
),
'operator' => 'NOT IN'
)
)
) );
Remarque: oui, cela fait beaucoup de tableaux imbriqués. Les requêtes fiscales peuvent être délicates comme ça.
L'étape suivante consiste à modifier vos instructions d'ouverture / fermeture de boucle. Modifiez-les:
<?php foreach($myposts as $post) : ?>
<?php /* loop markup goes here */ ?>
<?php endforeach; ?>
...pour ça:
<?php if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?>
<?php /* loop markup goes here */ ?>
<?php endwhile; endif; ?>
<?php wp_reset_postdata(); ?>
Votre balisage de boucle réel devrait pouvoir rester le même, sauf que vous n'avez plus besoin d'appeler setup_postdata( $post )
:
<?php
$year = mysql2date('Y', $post->post_date);
$month = mysql2date('n', $post->post_date);
$day = mysql2date('j', $post->post_date);
?>
<p>
<span class="the_article">
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</span>
<span class="the_day">
<?php the_time('j F Y'); ?>
</span>
</p>
Donc, tout mettre ensemble:
<?php
// Only query posts with the
// "standard" post format, which
// requires *excluding* all other
// post formats, since neither the
// "post_format" taxonomy nor the
// "post-format-standard" taxonomy term
// is applied to posts without
// defined post formats
$myposts = new WP_Query( array(
'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array(
'post-format-aside',
'post-format-audio',
'post-format-chat',
'post-format-gallery',
'post-format-image',
'post-format-link',
'post-format-quote',
'post-format-status',
'post-format-video'
),
'operator' => 'NOT IN'
)
)
) );
// Open the loop
if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?>
$year = mysql2date('Y', $post->post_date);
$month = mysql2date('n', $post->post_date);
$day = mysql2date('j', $post->post_date);
?>
<p>
<span class="the_article">
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</span>
<span class="the_day">
<?php the_time('j F Y'); ?>
</span>
</p>
<?php
// Close the loop
endwhile; endif;
// Reset $post data to default query
wp_reset_postdata();
Les formats de publication ne sont que des termes prédéfinis dans une taxonomie appelée
post_format
, vous devriez donc pouvoir utiliser la hiérarchie des modèles WP pour créer des archives de format de publication. Créez simplement un fichier appelétaxonomy-post_format-post-format-standard.php
à la racine de votre thème et ce fichier sera utilisé pour sortir tous vos messages standard. Vous pouvez remplacer «standard» par l'un des autres noms de format, commeaside
,link
ouvideo
, par exemple, par exempletaxonomy-post_format-post-format-video.php
. Cela fonctionne également pour toute autre taxonomie, btw, tant que vous vous en tenez à ce format:taxonomy-{TAXONOMY_NAME}-{TERM_NAME}.php
Si vous souhaitez afficher les formats de publication avec une boucle personnalisée, par exemple dans votre barre latérale ou dans un modèle de page, vous pouvez utiliser la requête fiscale de @kaiser. Remplacez simplement la taxonomie par
post_format
et les limaces parpost-format-{FORMAT_NAME}
.la source
Pour deux taxonomies différentes. Pour un seul, vous pouvez laisser l'
relation
argument en dehors.la source
Vous pouvez faire un tour comme ça:
C'est parce que get_post_format () pour le format de publication standard renvoie false. http://codex.wordpress.org/Function_Reference/get_post_format
la source
'posts_per_page' => 6
et avez 4 messages avec un modèle NON standard, vous ne verrez que 2 messages, pas les 6 qui devraient être visibles. filtrer la requête est la voie à suivre.