У меня есть настраиваемая группа полей для авторов, поэтому при создании сообщения или страницы пользователь может добавить к сообщению несколько авторов.
Под заголовком сообщения возможны следующие варианты:
- нет авторов
- один автор (имя отображается под заголовком сообщения)
- 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;
?>