ACF Pro select field problem

时间:2017-08-01 作者:D_P

我正在尝试使用ACF Pro Select字段显示指定的社交媒体图标。因此,我的主题中有以下代码:

<?php if( get_field(\'social_medias\', \'option\') == \'facebook\' ): ?>
           <li>
                <a href="#">
                    <svg viewbox="0 0 6.5 14" xmlns="http://www.w3.org/2000/svg">
                    <path class="st0" d="M1.4 14h2.9v-7h2l.2-2.5h-2.2v-1.4c0-.3.2-.6.5-.7h1.7000000000000002v-2.4h-2.2c-1.5-.1-2.8 1-2.9 2.5v2h-1.4v2.5h1.4v7z" id="Layer_3"></path></svg>
                </a>
            </li>
        <?php endif; ?>
“social\\u medias”是具有多个选项的选择字段,如Facebook或Twitter。这个代码怎么了?它似乎不起作用:D

3 个回复
最合适的回答,由SO网友:Nuno Sarmento 整理而成

您可以使用下面的代码循环使用ACF选项。

<?php if( have_rows(\'social_medias\', \'option\') ):

    while ( have_rows(\'social_medias\', \'option\') ) : the_row(); 

      $type = get_sub_field(\'type\'); ?>


          <?php if ($type == "facebook") { ?>

                <li>
                     <a href="#">
                             <svg viewbox="0 0 6.5 14" xmlns="http://www.w3.org/2000/svg">
                             <path class="st0" d="M1.4 14h2.9v-7h2l.2-2.5h-2.2v-1.4c0-.3.2-.6.5-.7h1.7000000000000002v-2.4h-2.2c-1.5-.1-2.8 1-2.9 2.5v2h-1.4v2.5h1.4v7z" id="Layer_3"></path></svg>
                     </a>
              </li>

          <?php } elseif ($type == "twitter") { ?>

                <li>
                     <a href="#">
                             <svg viewbox="0 0 6.5 14" xmlns="http://www.w3.org/2000/svg">
                             <path class="st0" d="M1.4 14h2.9v-7h2l.2-2.5h-2.2v-1.4c0-.3.2-.6.5-.7h1.7000000000000002v-2.4h-2.2c-1.5-.1-2.8 1-2.9 2.5v2h-1.4v2.5h1.4v7z" id="Layer_3"></path></svg>
                     </a>
                </li>

            <?php } elseif ($type == "google") { ?>

                <li>
                     <a href="#">
                             <svg viewbox="0 0 6.5 14" xmlns="http://www.w3.org/2000/svg">
                             <path class="st0" d="M1.4 14h2.9v-7h2l.2-2.5h-2.2v-1.4c0-.3.2-.6.5-.7h1.7000000000000002v-2.4h-2.2c-1.5-.1-2.8 1-2.9 2.5v2h-1.4v2.5h1.4v7z" id="Layer_3"></path></svg>
                     </a>
                </li>


<?php   } endwhile; endif; ?>

SO网友:Nuuu

我会这样做:

    <?php
    if( have_rows(\'social_medias\', \'option\') ):
        while ( have_rows(\'social_medias\', \'option\') ) : the_row();
            $type = get_sub_field(\'type\');
            if ($type == "facebook") {

            } elseif ($type == "twitter") {

            }
        endwhile;
    endif;
    ?>

SO网友:rudtek

这里可能有几件事不对。我将进行故障排除。

记住,当你在选择选项中输入信息时,“facebook”并不等于“facebook”。所以这个

<?php if( get_field(\'social_medias\', \'option\') == \'facebook\' ): ?>
可能需要

<?php if( get_field(\'social_medias\', \'option\') == \'Facebook\' ): ?>
如果未使用值和标签,请确保在“字段选项”页面中选择了正确的选项,以仅返回值。如果您有值和标签,并且同时返回这两个值和标签,那么此代码可能会起作用:

<?php if( get_field(\'social_medias\', \'option\')[\'value\'] == \'facebook\' ): ?>
再次确保您知道大写或小写。

结束

相关推荐

在小部件表单中使用多个<SELECT>元素

我正在尝试将所有选项保存在<select> 小部件中的元素。到目前为止,我有以下表单的PHP代码:public function form( $instance ) { // Code for editing/adding title and adding IDs to the <select> object // ... <select class=\"widefat\" id=\"<?php echo $th