下面的代码取自侧栏。php,它从多个类别中输出随机帖子,并将当前帖子排除在外。这很好,但我如何改变这个循环,将所有帖子从当前页面类别中排除?因此,例如,如果一篇文章当前正在显示,而其类别是艺术家,我希望排除所有艺术家的文章,但显示所有其他类别(在下面的代码中说明)。
这是我的循环:
<?php
// First, let\'s eliminate some DRY,
// by making an array of our categories
$random_posts_cat_array = array( \'artists\', \'projects\', \'people\', \'development\', \'offsite\' );
// Globalize $post,
// since we\'re outside the primary loop
global $post;
$post_cats = get_the_category( $post->ID );
// First array object
$post_cat = $post_cats[0];
// Current post category ID
$post_cat_id = $post_cat->term_id;
// Current post category slug
$post_cat_slug = $post_cat->slug;
// Now, let\'s find out if we\'re displaying
// the category index for one of our categories
if ( in_array( $post_cat_slug, $random_posts_cat_array ) ) {
// Set up custom loop args
$random_posts_query_args = array(
\'posts_per_page\' => 3,
\'orderby\' => \'rand\',
\'post__not_in\' => array( $post->ID )
);
// Add Cat ID to custom loop args
foreach ( $random_posts_cat_array as $random_post_cat ) {
if ( $post_cat_slug == $random_post_cat ) {
// Add Cat ID
$random_posts_query_args[\'cat\'] = $post_cat_id;
}
}
// Run random posts query
$random_posts_query = new WP_Query( $random_posts_query_args );
// Setup random posts query loop
if ( $random_posts_query->have_posts() ) : while ( $random_posts_query->have_posts() ) : $random_posts_query->the_post();?>
<?php foreach( get_the_category() as $cat ) echo \'<div class="module \' . $cat->slug . \'" data-category="\' . $cat->slug . \'" >\'; ?>
<a href="<?php the_permalink()?>" title="<?php the_title(); ?>">
<div class="active">
<div class="hover"></div>
<?php the_post_thumbnail(); ?>
</div>
<?php
$sub_title=get_post_meta($post->ID,\'subtitle\',true);
if($sub_title != \'\') {
echo \'<h1>\'. get_the_title() .\'<span> / \'. $sub_title .\'</span></h1>\';
} else {
echo \'<h1>\'. get_the_title() .\'</h1>\';
}
?>
<?php
// Call in the contents of a custom field called Excerpt and if custom field in admin panel is empty don\'t display <p> tags otherwise wrap contents in <p> tags
$excerpt=get_post_meta($post->ID,\'Excerpt\',true);
if($excerpt != \'\') {
echo \'<p>\'. $excerpt .\'</p>\';
} else {
echo \' \';
}
?>
<p class="date"><?php the_time(\'YdmHi\') ?></p>
</a>
</div>
<?php endwhile; endif;
// Be kind; rewind
wp_reset_postdata();
} else { // display nothing ?>
<?php }?>