我最近在我的WordPress主题中添加了帖子格式 - 在博客页面上它很好,因为它们都是相应的样式。但是在我的主页模板上我只想显示“标准”帖子格式(没有链接,画廊,音频,视频等)。
在我的主题选项中,我可以决定在首页上显示的帖子数量是'dft_recent_number'的用途。
是否有人知道我如何更改以下代码以排除除“标准”帖子格式以外的所有内容?
<?php
$query = new WP_Query();
$query->query('posts_per_page='.get_option('dft_recent_number'));
//Get the total amount of posts
$post_count = $query->post_count;
while ($query->have_posts()) : $query->the_post();
?>
非常感谢任何帮助!
答案 0 :(得分:4)
WP_Query似乎没有post_format
的简单参数。
从我的快速研究看来,帖子格式通过分类法相关联。所以,理论上,使用分类法参数应该工作。
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => 'post-format-standard',
)
)
);
$query = new WP_Query( $args );
注意:您需要更新博客的分类名称和slugs。这应该是您在functions.php文件中设置的名称。
答案 1 :(得分:4)
// there's no post-format-standard so you should write it like this to exclude all other postpformats
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array('post-format-quote','post-format-audio','post-format-gallery','post-format-image','post-format-link','post-format-video'),
'operator' => 'NOT IN'
)
答案 2 :(得分:1)
我知道这已经过时了,但我遇到了同样的问题,即使我找到了一个解决方案,我也想知道其他人做了什么来“修复”这个问题。
我认为更具可扩展性的解决方案可能是这样的:
$post_formats = get_theme_support( 'post-formats' );
$tax_query = false;
if ( $post_formats ) {
$tax_query = array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => $post_formats[0],
'operator' => 'NOT IN'
)
);
}
// WP_Query arguments
$args = array(
'post_type' => 'post',
'order' => 'DESC',
'orderby' => 'date',
'tax_query' => $tax_query
);
这将排除已启用的帖子格式,如果WP将添加更多帖子格式(或添加添加更多内容的功能),也可以使用。