所以我试图在PHP if语句中返回一行HTML但是由于某种原因它没有执行。
<?php
$args_commercial = array(
'post_type' => 'sidebar_post'
);
$query_commercial = new WP_Query( $args_commercial );
?>
<ul>
<?php if (have_posts() ) : while ($query_commercial->have_posts() ) : $query_commercial->the_post(); ?>
<?php
$thumb_id = get_post_thumbnail_id();
$thumb_url_array = wp_get_attachment_image_src($thumb_id, 'thumbnail-size', true);
$thumb_url = $thumb_url_array[0];
?>
<li data-id="0">
<?php if (have_posts() ) : while (have_posts() ) : the_post(); ?>
<?php
$page_field = strtolower(get_field( 'page' ));
$page_title = strtolower(get_the_title());
if ( $page_field == $page_title ): ?>
<a href="<?php echo get_field( 'link' ); ?>" style="background-image: url(<?php echo $thumb_url; ?>)"><span><?php the_title(); ?></span></a>
<?php endif; ?>
</li>
<?php endwhile; endif; ?>
<?php endwhile; endif; ?>
</ul>
所以只是为了解释一下,我在一个自定义帖子类型(带有帖子的侧边栏)中循环,并且在该自定义帖子类型中是一个选项,用于选择要显示自定义帖子类型的页面。
这就是$ page_field变量所代表的含义。 $ page_title只是页面的标题。因此理论上,如果用户选择页面字段和页面的实际标题相同,则将打印HTML,然后将显示侧栏。
现在由于某种原因,if块中的HTML没有执行,即使$ page_title和$ page_field是完全相同的值(我通过回显它们来测试它们)。
我真的不确定如何进一步调试并确保HTML显示出来。任何帮助都会非常适合
感谢。
答案 0 :(得分:0)
看起来循环让我搞砸了。我首先遍历页面本身,得到页面标题,然后循环浏览自定义帖子类型。这让if块执行。这是代码:
<?php
$args_commercial = array(
'post_type' => 'sidebar_post'
);
$query_commercial = new WP_Query( $args_commercial );
?>
<ul>
<?php if (have_posts() ) : while (have_posts() ) : the_post(); ?>
<?php
$page_title = strtolower(get_the_title());
?>
<?php endwhile; endif; ?>
<?php if (have_posts() ) : while ($query_commercial->have_posts() ) : $query_commercial->the_post(); ?>
<?php
$thumb_id = get_post_thumbnail_id();
$thumb_url_array = wp_get_attachment_image_src($thumb_id, 'thumbnail-size', true);
$thumb_url = $thumb_url_array[0];
?>
<li data-id="0">
<?php
$page_field = strtolower(get_field( 'page' ));
if ( trim($page_field) == trim($page_title) ): ?>
<a href="<?php echo get_field( 'link' ); ?>" style="background-image: url(<?php echo $thumb_url; ?>)"><span><?php the_title(); ?></span></a>
<?php endif; ?>
</li>
<?php endwhile; endif; ?>
</ul>