Você não pode realmente passar um argumento relacionado à taxonomia para get_posts()
. (Edit: na verdade, sim, você pode. O Codex é um pouco incerto. Olhar para a fonte get_posts()
é, no fundo, apenas um invólucro WP_Query()
.) Você pode passar meta chaves / valores e tipos de postagem , mas não taxonomias como post formato. Então, para esta linha:
$myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC');
Eu recomendaria usar em WP_Query()
vez de 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'
)
)
) );
Nota: sim, existem muitas matrizes aninhadas. As consultas fiscais podem ser complicadas assim.
O próximo passo é modificar as instruções de abertura / fechamento do loop. Altere estes:
<?php foreach($myposts as $post) : ?>
<?php /* loop markup goes here */ ?>
<?php endforeach; ?>
...para isso:
<?php if ( $myposts->have_posts() ) : while ( $myposts->have_posts() ) : $myposts->the_post(); ?>
<?php /* loop markup goes here */ ?>
<?php endwhile; endif; ?>
<?php wp_reset_postdata(); ?>
Sua marcação de loop real deve poder permanecer a mesma, exceto que você não precisa mais chamar 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>
Então, juntando tudo:
<?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();
Os formatos de postagem são apenas termos predefinidos em uma taxonomia chamada
post_format
, portanto, você deve poder usar a hierarquia de modelos do WP para criar arquivos de formato de postagem. Basta criar um arquivo chamadotaxonomy-post_format-post-format-standard.php
na raiz do seu tema e esse arquivo será usado para gerar todas as suas postagens padrão. Você pode substituir 'padrão' por qualquer outro nome de formato, comoaside
,link
ouvideo
, por exemplo, por exemplotaxonomy-post_format-post-format-video.php
. Isso funciona para qualquer outra taxonomia, btw, desde que você se atenha a este formato:taxonomy-{TAXONOMY_NAME}-{TERM_NAME}.php
Se você quiser mostrar os formatos de postagem com um loop personalizado, por exemplo, na barra lateral ou dentro de um modelo de página, use a consulta de impostos do @kaiser. Apenas substitua a taxonomia por
post_format
e as lesmas porpost-format-{FORMAT_NAME}
.fonte
Para duas taxonomias diferentes. Para um único, você pode deixar o
relation
argumento de fora.fonte
Você pode fazer truques assim:
Isso ocorre porque get_post_format () para o formato de postagem padrão retorna false. http://codex.wordpress.org/Function_Reference/get_post_format
fonte
'posts_per_page' => 6
e tiver 4 postagens com o modelo NÃO padrão, verá apenas 2 postagens, não as 6 que devem estar visíveis. filtrar a consulta é a prova maneira de ir ..