以下是从自定义选择字段检索并输出状态名称到导航菜单的代码。例如:如果纽约州有5个帖子,这个代码只显示导航下拉菜单中的一个纽约帖子,因为删除了冗余值..但我想要做的是,当用户点击纽约时,它重定向到新页面,其中将显示纽约下的所有帖子。与所有状态相同,因为这是一个动态菜单
$args = array('post_type' => 'article-form', 'showposts' => -1, 'orderby' => 'date', 'order' => 'DSC');
$city = new WP_Query($args);
$states = [];
while ( $city->have_posts() ) :
$city->the_post();
$state = get_field('state');
if ( !in_array($state, $states) ) :
$states[] = $state;
?>
<li>
<a href="<?php the_permalink(); ?>" style="text-decoration: none; color: #9c9c9c;">
<?php echo $state;
?>
</a>
<hr style="margin: 0">
</li>
<?php
endif;
endwhile; ?>
<?php wp_reset_query(); ?>
</ul>
答案 0 :(得分:0)
尝试将唯一值推送到数组
DArray
我希望它有所帮助!
P.S尽量避免使用内联css,使用外部css文件进行任何类型的样式化。让你的html文件尽可能干净。
答案 1 :(得分:0)
@ user3127632将值推送到数组以检查它们之前是否已被打印的想法很好,但是他/她的代码中存在一些错误。
如果您需要将ACF的字段值存储到变量中,则应使用get_field()
而不是the_field()
,因为最后一个不返回值而是打印它。此外,您需要移动条件中的li
和a
节点,否则您将不会回显链接中的标签,但重复的链接仍将存在...
所以,它会是这样的:
<?php
$states = [];
while ( $city->have_posts() ) :
$city->the_post();
$state = get_field('state');
if ( !in_array($state, $states) ) :
$states[] = $state; // A more efficient way to push values to an array
?>
<li>
<a href="<?php the_permalink(); ?>" style="text-decoration: none; color: #9c9c9c;">
<?php echo $state; ?>
</a>
<hr style="margin: 0">
</li>
<?php
endif;
endwhile;
?>
我希望这有帮助!