我有一个自定义的帖子类型(活动),在每个帖子上,我循环使用另一个自定义帖子类型(旅游)。
在第二个循环中,我想创建一个包含当前帖子名称的变量,以便使用它来检查教程是否包含当前页面的活动。
在开始第二个循环之前,我尝试创建变量,但如果我尝试在第二个循环中回显该变量,它就会丢失,并且不会输出任何内容。这对于大多数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; ?>
提前感谢您的帮助:)
最合适的回答,由SO网友:Jacob Peattie 整理而成
您对变量所做的操作是正确的(在开始下一个循环之前定义它),但您没有正确输出它:
<p>current post = <?php $current_page; ?></p>
如果要输出
$current_page
在屏幕上,您需要
echo
信息技术:
<p>current post = <?php echo $current_page; ?></p>