删除从自定义字段中检索的重复标题WordPress的

时间:2016-05-02 18:21:40

标签: php wordpress advanced-custom-fields

以下是从自定义选择字段检索并输出状态名称到导航菜单的代码。例如:如果纽约州有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>

2 个答案:

答案 0 :(得分:0)

尝试将唯一值推送到数组

DArray

我希望它有所帮助!

P.S尽量避免使用内联css,使用外部css文件进行任何类型的样式化。让你的html文件尽可能干净。

答案 1 :(得分:0)

@ user3127632将值推送到数组以检查它们之前是否已被打印的想法很好,但是他/她的代码中存在一些错误。

如果您需要将ACF的字段值存储到变量中,则应使用get_field()而不是the_field(),因为最后一个不返回值而是打印它。此外,您需要移动条件中的lia节点,否则您将不会回显链接中的标签,但重复的链接仍将存在...

所以,它会是这样的:

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

我希望这有帮助!