【问题标题】:ACF returning checkbox values multiple timesACF 多次返回复选框值
【发布时间】:2019-11-28 10:16:02
【问题描述】:

我正在 ACF 的帮助下在 wordpress 中建立一个网站,但我遇到了一个我似乎无法解决的问题。

我有一个名为 "portfolio" 的转发器字段,其中有一个带有 3 个选项的复选框字段。 我使用它们,因此我可以将类添加到 div 以进行过滤,它工作正常,但是当我想将选择值作为列表显示到我的网页时,它会多次给我相同的值。

例如,我添加了 5 个 div,其中 3 个检查了“digi”的值,所以当我调用复选框值时,我会得到 3 次列表元素“digi”。我真的只想在我的网站上显示 3 种不同的选择。

我的代码:

<?php

if( have_rows('portfolio') ):
 while ( have_rows('portfolio') ) : the_row();
   $class = get_sub_field('portfolio_img_class');



 foreach( $class as $value ): ?>
    <li><?php echo $value; ?></li>
 <?php endforeach;               


 endwhile;
 else :
   echo "FFS";
 endif;
?>

我用来为 div 提供类的其他代码:

<?php if( have_rows('portfolio') ): ?>

                <section class="work">

                <?php while( have_rows('portfolio') ): the_row(); 

                    $image = get_sub_field('portfolio_img');
                    $text = get_sub_field('portfolio_img_text');
                    $link = get_sub_field('portfolio_img_link');
                    $class = get_sub_field('portfolio_img_class');

                    ?>

                    <div class="item-work item-work-portfolio 

                                <?php 
                                foreach ( $class as $value ) {  echo $value . " ";  } ?> 

                                "> 

                        <a href="<?php echo $link; ?>">
                            <img src="<?php echo $image; ?>"/>
                            <div class="work-overlay">
                                <h1 class="work-overlay-title"><?php echo $text; ?></h1>
                            </div>
                        </a>
                    </div> 

                <?php endwhile; ?>

                </section>

            <?php endif; ?>

我尝试了很多东西,但似乎没有任何效果。我这个几乎只是在主题中硬编码该死的东西。

编辑: 第一段代码的输出:

<ul id="nupud">
 <li><a class="btn" onclick="filterSelection('all')">Kõik</a></li>                                                                        
 <li>digi</li>                                                                               
 <li>disain</li>                                                                               
 <li>digi</li>                                                                                    
 <li>disain</li>                                                                                           
 <li>digi</li>                                                                                           
 <li>disain</li>                                                                                           
 <li>digi</li>                                                                                           
 <li>disain</li>                                                                             
 <li>digi</li>                                                                                          
 <li>disain</li>                                                                                         
 <li>sotsiaalmeedia</li>
</ul>

【问题讨论】:

    标签: php wordpress advanced-custom-fields


    【解决方案1】:

    因此您可以将所有值存储在一个数组中,然后在这个数组上使用另一个循环,array_unique() 函数删除重复值,array_values() 函数重新索引数组。然后输出唯一值:

    <?
    $allValues = array();
    if (have_rows('portfolio')):
        while (have_rows('portfolio')) : the_row();
            $class = get_sub_field('portfolio_img_class');
            foreach ($class as $value):
                $allValues[] = $value;
            endforeach;
        endwhile;
    else:
        // do nothing
    endif;
    $uniqueValues = array_values(array_unique($allValues));
    foreach ($uniqueValues as $value):
        echo $value . ' ';
    endforeach;
    

    【讨论】:

    • 这似乎仍然不起作用。输出还是一样的。
    • 请发布print_r($class);的输出
    • Array ( [0] =&amp;gt; digi [1] =&amp;gt; disain ) Array ( [0] =&amp;gt; digi [1] =&amp;gt; disain ) Array ( [0] =&amp;gt; digi [1] =&amp;gt; disain ) Array ( [0] =&amp;gt; digi [1] =&amp;gt; disain ) Array ( [0] =&amp;gt; digi [1] =&amp;gt; disain [2] =&amp;gt; sotsiaalmeedia )
    • 你希望输出只是&lt;li&gt;digi&lt;/li&gt;&lt;li&gt;disain&lt;/li&gt;&lt;li&gt;sotsiaalmeedia&lt;/li&gt;?
    • 现在它就像一个魅力。非常感谢!你是真正的救星
    猜你喜欢
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2015-09-19
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多