如何从多个类别中列出随机发布的帖子?

时间:2013-01-26 作者:Genxer

我有一个作者页面,我想列出当前作者类别中的帖子。

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(); ?>

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

当然,我可能误解了你。你的帖子不是很清楚,但是。。。

category__and 将要求这两个职位都属于这两个类别。听起来你需要任何类别的帖子。您应该使用category__in 这样你就可以OR 匹配类别,而不是AND 火柴

showposts 已弃用。

二者都category__andcategory__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

结束

相关推荐

Using Posts Like a Page

我正在从事一个客户项目,他们希望使用帖子,就像我们传统上使用页面一样,因为WordPress安装可以处理的页面数量有限,并且能够更有效地对帖子进行分类。我遇到的问题是,客户希望每个帖子都有子帖子,就像子页面一样。我必须两者都能title the child posts 和present them in a menu on the parent post and child posts of the parent (父帖子和子帖子上的菜单相同)。我考虑过wp\\u link\\u页面,但这不允许子帖子的菜单