Wordpress ACF репитер полевой условной петли - PullRequest
1 голос
/ 03 апреля 2019

У меня есть настраиваемая группа полей для авторов, поэтому при создании сообщения или страницы пользователь может добавить к сообщению несколько авторов.

Под заголовком сообщения возможны следующие варианты:

  • нет авторов
  • один автор (имя отображается под заголовком сообщения)
  • 2 автора (между именем 1 и именем 2 появляется слово «и»)
  • и, наконец, если имеется более 2 имен, каждое имя будет отображаться на отдельной строкой.

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;

?>
...