我有一个作者页面,我想列出当前作者类别中的帖子。
e、 我正在查看约翰的页面,约翰在体育、科技、新闻、计算机类中写道。
然后我的代码列表从这个(体育,科技,新闻,电脑)类别中随机列出10篇文章。
但有些地方出了问题:
这4个类别有25个员额。但我的代码并没有列出10篇文章,它只是列出了1篇文章。我需要随机的帖子列表
我的代码:
<?php global $post, $wpdb;
$author_id = $post->post_author;
$categories = $wpdb->get_results("
SELECT DISTINCT(terms.term_id) as ID, terms.name, terms.slug
FROM $wpdb->posts as posts
LEFT JOIN $wpdb->term_relationships as relationships ON posts.ID = relationships.object_ID
LEFT JOIN $wpdb->term_taxonomy as tax ON relationships.term_taxonomy_id = tax.term_taxonomy_id
LEFT JOIN $wpdb->terms as terms ON tax.term_id = terms.term_id
WHERE 1=1 AND (
posts.post_status = \'publish\' AND
posts.post_author = \'$author_id\' AND
tax.taxonomy = \'category\' )
ORDER BY terms.name ASC
");
foreach($categories as $category) :
$catnumber = $category->ID.\',\';
endforeach;?>
<?php
$args = array(
\'category__and\' => array( $catnumber )
, \'showposts\'=> \'10\'
);
$my_query = new WP_Query( $args );
?>
<ul>
<?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; ?>
<ul>
<?php wp_reset_postdata(); ?>
最合适的回答,由SO网友:s_ha_dum 整理而成
当然,我可能误解了你。你的帖子不是很清楚,但是。。。
category__and
将要求这两个职位都属于这两个类别。听起来你需要任何类别的帖子。您应该使用category__in
这样你就可以OR
匹配类别,而不是AND
火柴
showposts
已弃用。
二者都category__and
和category__in
接受数组。您正在构建一个逗号分隔的类别字符串,然后将其转换为数组。这不太可能像预期的那样奏效。
按如下方式构建类别数组:
foreach($categories as $category) :
$catnumber[] = $category->ID;
endforeach;
并这样查询:
$args = array(
\'category__in\' => $catnumber,
\'posts_per_page\' => 10,
\'orderby\' => \'rand\'
);
http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters