0

我在自定义页面上有两个循环,我想从第二个循环中省略第一个循环中带有帖子 ID 的帖子(当然显示类别 36 中的所有其他帖子)。

编辑:这是 php 文件中的全部代码:

<?php
global $udesign_options;

// construct an array of portfolio categories
$portfolio_categories_array = explode( ',', $udesign_options['portfolio_categories'] );

if ( $portfolio_categories_array != "" && post_is_in_category_or_descendants( $portfolio_categories_array ) ) :
// Test if this Post is assigned to the Portfolio category or any descendant and switch the single's template accordingly
include 'single-Portfolio.php';
else : // Continue with normal Loop (Blog category)

get_header();

$content_position = ( $udesign_options['blog_sidebar'] == 'left' ) ? 'grid_16 push_8' : 'grid_16';
if ( $udesign_options['remove_single_sidebar'] == 'yes' ) $content_position = 'grid_24';
?>
<div id="content-container" class="container_24">
<div id="main-content" class="<?php echo $content_position; ?>">
    <div class="main-content-padding">
<?php if (have_posts()) :
        while (have_posts()) : the_post(); ?>
        <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
            <div class="entry" style="margin:-30px 0 00px 0;">
<?php                           // Post Image
                            if( $udesign_options['display_post_image_in_single_post'] == 'yes' ) display_post_image_fn( $post->ID, false );
            the_content(__('<p class="serif">Read the rest of this entry &raquo;</p>', 'udesign'));
            wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>


            </div>


<?php
$args = array( 'category' => 36, 'post_type' =>  'post' ); 
$postslist = get_posts( $args );    
foreach ($postslist as $post) :  setup_postdata($post); 
?>     
<h2><?php the_title(); ?></h2> 
<?php the_content(); ?> 
<?php echo do_shortcode('[divider_top]'); ?>
<?php endforeach; ?> 



<div><?php comments_template();
        endwhile; else: ?>
        <p><?php esc_html_e("Sorry, no posts matched your criteria.", 'udesign'); ?></p>
<?php endif; ?></div>
    </div><!-- end main-content-padding -->
</div><!-- end main-content -->

<?php
if( ( !$udesign_options['remove_single_sidebar'] == 'yes' ) && sidebar_exist('BlogSidebar') ) { get_sidebar('BlogSidebar'); }
?>

</div><!-- end content-container -->
<?php endif; // end normal Loop ?>

<div class="clear"></div>

<?php get_footer(); ?>

我想通了,这段代码需要插入 $args = array('exclude' =>theExcludedID, 'category' => 36, 'post_type' => 'post' );

4

2 回答 2

1

根据问题的更新,似乎第一个循环显示portfolio_categories了自定义查询中的所有类别,很可能也包括类别 36 中的那些。

我能想到的不重复第二个循环中的帖子的唯一方法是从第一个循环中排除所有类别 36 的帖子。

我无法测试代码,但这里是如何做到这一点的想法:

在 Loop 之后添加 3 行代码,如下所示:

if (have_posts()) : while (have_posts()) : the_post(); // This is the Loop
$Category =  get_the_category( $post->ID );
$CatID = $Category[0]->cat_ID ; // The 0 assumes the post has only one category. If there are more, the number must be changed accordingly.
if ($CatID == 36) continue;
于 2013-01-04T11:22:33.483 回答
0

在循环顶部使用以下内容:

if(get_the_ID() == theExcludedID){
    continue;
}

跳过任何迭代。

于 2013-01-03T17:27:14.347 回答