如何将当前循环数据传递到嵌套循环

时间:2018-10-02 作者:user3205234

我有一个自定义的帖子类型(活动),在每个帖子上,我循环使用另一个自定义帖子类型(旅游)。

在第二个循环中,我想创建一个包含当前帖子名称的变量,以便使用它来检查教程是否包含当前页面的活动。

在开始第二个循环之前,我尝试创建变量,但如果我尝试在第二个循环中回显该变量,它就会丢失,并且不会输出任何内容。这对于大多数PHP和Wordpress开发人员来说可能是显而易见的,所以我很抱歉我在这里缺乏知识!

这里是我的代码的简化版本

<?php // start the activities loop ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <?php // Get current post name ?>
    <?php $current_page = $post->post_name; ?>
    <?php $args = array(
        \'post_type\' => \'tours\'
    );
    $tours_query = new WP_Query($args);
    ?>
    <?php if($tours_query->have_posts()): ?>                
        <?php while($tours_query->have_posts()): $tours_query->the_post(); ?>
            <?php the_title(); ?>
            <?php while(have_rows(\'itinerary\')):the_row(\'itinerary\'); ?>
                <?php $posts = get_sub_field(\'activity\'); ?>
                <?php if($posts): ?>
                    <?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
                        <?php setup_postdata($post); ?>
                        <?php // the permalink and title shown below are correct ?>
                        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

                        <?php // Trying to get the current post name to use here ?>
                        <p>current post = <?php $current_page; ?></p>
                    <?php endforeach; ?>
                    <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
                <?php else: ?>
                    <p>No activities found</p>
                <?php endif; ?>
            <?php endwhile; ?>
        <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
<?php endif; ?>
提前感谢您的帮助:)

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

您对变量所做的操作是正确的(在开始下一个循环之前定义它),但您没有正确输出它:

<p>current post = <?php $current_page; ?></p>
如果要输出$current_page 在屏幕上,您需要echo 信息技术:

<p>current post = <?php echo $current_page; ?></p>

结束

相关推荐

The Loop not looping?

在进行了大量的故障排除和搜索之后,我想我终于明白了如何进行循环。但我似乎无法让它真正循环!我创建了一个子主题,并添加了functions.php 文件中包含以下代码:<?php function my_theme_enqueue_styles() { $parent_style = \'grow-thinkup-style-minimal\'; // This is \'twentyfifteen-style\' for the Twenty Fifteen the