WordPress ACF中继器字段条件循环

时间:2019-04-03 15:39:12

标签: php wordpress advanced-custom-fields

我有一个针对作者的自定义字段组,以便在创建帖子或页面时,用户可以将多个作者添加到帖子中。

在帖子标题下,可能是:

  • 没有作者
  • 一位作者(姓名显示在帖子标题下)
  • 2位作者(名称1和名称2之间出现单词“ and”)
  • 最后,如果名称超过两个,则每个名称都会出现在 单独的一行。

rep_authors是“转发器”字段。

在转发器中有两个子字段,一个子字段名为po_author,该子字段设置为页面链接(作者名也将是指向其生物学页面的链接),第二个子字段为text_author_other。在WP管理员中,这些内容显示在WYSIWYG编辑器下,并允许您根据有多少作者来添加行。 po_author子字段是一个下拉列表,您可以在其中选择管理员中的任何注册作者,而text_author_other字段则允许您手动输入新作者。

下面有我的代码,它计算名称并回显一个基本短语,以测试逻辑并确保该部分正常工作。

if ( class_exists( 'acf' ) ) :
    ?>

    <?php if ( have_rows( 'rep_authors' ) ):

        $authors = get_field( 'rep_authors' );

            $number_authors = count( $authors );

    ?>

    // Determines how to display author names based on number of authors

    <?php if ( 0 === $number_authors ) {
        echo 'There are no authors';

        }   elseif ( 1 === $number_authors ) {
                echo 'There is 1 author';
            }
                elseif ( 2 === $number_authors ) {
                echo 'There are 2 authors';
            }
                elseif ( 2 < $number_authors ) {
                echo 'More than 2 authors';
            }

        endif;

    ?>

以下内容使名称在一行中一个接一个地显示,但是我需要如上所述的显示方式,使其具有条件。

    <?php $post_id = get_sub_field('po_author', false, false);?>

    <?php if( $post_id ): ?>

        <a href="<?php echo get_the_permalink($post_id); ?>"><?php echo get_the_title($post_id); ?></a>

    <?php endif; ?>

    <?php else : ?>

        <?php the_sub_field('text_author_other');?>

    <?php endif; ?>

<?php

    endwhile;

    endif;

?>

0 个答案:

没有答案