在第二个查询中使用第一个查询中的POST对象

时间:2012-05-17 作者:elbatron

我在第一个查询的变量中存储了一个帖子ID,我想用它在第二个查询中突出显示具有相同ID的帖子,但它不起作用。

第一个循环:

        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

            <?php foreach(get_field(\'relationship\') as $post_object): ?>
            <?php $current = get_the_ID($post_object->ID); ?>
            <?php echo $current; ?>
                <a href="<?php echo get_permalink($post_object->ID); ?>"><?php echo get_the_title($post_object->ID) ?></a>
            <?php endforeach; ?>

            <?php the_content();?>

        <?php endwhile; else: ?> 
        <?php endif; ?>
这篇文章是在我的第二个循环中查询的(与第一个循环无关),只是我不知道如何通过第一个循环中的变量来识别它。

第二个:

                <?php $news_arg=array(
                    \'post_type\' => array (\'books\'),
                    \'post_status\' => array( \'publish\'),
                    \'posts_per_page\' => 20,
                    );
                    $arg_query = new WP_Query();
                    $arg_query->query( $arg );
                ?>
                <?php if( $arg_query->have_posts() ) : ?>
                <?php while( $arg_query->have_posts() ) : $arg_query->the_post(); ?>
                <?php print_r($arg_query) ?>
          <li>
            <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
            </li>
                <?php endwhile; ?>
                <?php else : ?>
                <?php endif; ?> 
谢谢。

编辑:Alex的答案加上Chip的更正应该是可行的,但由于一些奇怪的原因,它不可行,所以我发布了我的完整代码,以防有人发现问题。(页面上没有其他查询或任何其他php):

编辑:replaced get_the_ID 具有get_permalink 现在它可以工作了:

<div class="span8 single_c">
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<div class="post-header">
    <h2 class="verseny">
    <a href="<?php echo get_permalink($post_object->ID); ?>"><?php echo get_the_title($post_object->ID) ?></a>
    </h2>
</div>

<?php foreach(get_field(\'relation\') as $post_object): ?>
<?php $current = get_permalink($post_object->ID); ?>
<?php endforeach; ?>
<div class="well single_p">
<?php echo $current ?>
<?php if(get_field(\'lead\')) {
    echo \'<p><strong>\' . get_field(\'lead\') . \'</strong></p>\';
} else { } ?>
    <?php the_content();?>

<?php endwhile; else: ?> 
<?php endif; ?>
</div>
</div>      

<div class="span4 single_c">
<div class="well db">
        <ul class="nav nav-list">
    <?php $arg=array(
    \'post_type\' => array (\'books\'),
    \'post_status\' => array( \'publish\'),
    \'posts_per_page\' => 10
    );
    $arg_query = new WP_Query();
    $arg_query->query( $arg );
    ?>
    <?php if( $arg_query->have_posts() ) : ?>
    <?php while( $arg_query->have_posts() ) : $arg_query->the_post(); ?>
>“rel=“bookmark”标题=”>

    <?php endwhile; else : ?>
    <?php endif; ?> 
    </ul>
</div>  
</div>

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

主循环查询post ID存储在$current. 此变量等效于$post->ID. 次级循环查询post ID在循环中可用,如下所示$post->ID. 因此,你只需要一个简单的if 二次循环中的语句:

<?php 
if ( $current == $post->ID ) {
    // This post is the same as the
    // primary loop\'s current post;
    // do something
}
?>
例如,要添加“current article”类,我将在<li>

<li<?php if ($post->ID == $current) echo \'class="current-article"\'; ?>><!-- stuff here --></li>

结束

相关推荐

排除QueryLoop中的类别和子类别

我想要一个排除某些类别及其子类别的QueryLop,我有这个: $args = array( \'category__not_in\' => array( 2, 6 ), ); 这排除了类别2和6,但没有其子类别,我能做什么?======更新=====我就是这么做的,但现在我正在寻找更好的解决方案: $excludes = array(2,6); $ex_childs = array