web-dev-qa-db-ja.com

最初のクエリの投稿オブジェクトを2番目のクエリで使用する

最初のクエリの変数に投稿IDが格納されています。これを使用して、2番目のクエリで同じ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; ?>

投稿は私の2番目のループで問い合わせられます(最初のものとは関係ありません)、最初のループからの変数によってそれを識別する方法が私にはわかりません。

第二:

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

ありがとう。

編集:チップの修正とアレックスの答えはうまくいくはずですが、いくつかの奇妙な理由のためそれがしないので、誰かが問題を発見した場合に備えて私は私のフルコードを投稿します。 (ページ上に他のクエリや他のPHPはありません):

編集:replaced get_the_IDget_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 ="ブックマーク "title =" ">

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

プライマリループクエリの投稿IDは$currentに格納されています。この変数は$post->IDと同等です。二次ループのクエリ投稿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>
1
Alex Lane