WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

ACF. Объект записи внутри повторителя, вывести категорию записи.

Сделал вывод объекта записи внутри повторителя, сейчас стоит задача вывести категорию (term) записи рядом с самой записью.

Использовал такой код:

<?php
$terms = get_the_terms( get_the_ID(), 'cat_rbp' );
if( is_array( $terms ) ) : ?>
  <ul>
	<?php foreach( $terms as $term ) : ?>
	  <li>
		<a href="<?php echo esc_url( get_term_link( $term->term_id, $term->taxonomy ) ); ?>"><?php echo esc_html( $term->name ); ?></a>
	  </li>
	<?php endforeach; ?>
  </ul>
<?php endif; ?>

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

$post не возвращает название таксономии, уже голову сломал как эту казалось бы простую вещь реализовать, код вместе с повторителем и объектом записи внутри повторителя такой:

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

					<?php while( have_rows('block_biblio') ): the_row(); ?>
						<?php $article_mitarbeiter = get_sub_field( 'objectssbio' ); ?>
						<?php global $post; ?>

			<div class="block-width-wp-bibliografiya">
				<div class="cat-bibliografiya">
					<h4><?php the_sub_field('date_biobio'); ?></h4>
				</div>
						<?php if ( $article_mitarbeiter ) : ?>
							<?php $post = $article_mitarbeiter; ?>
							<?php setup_postdata( $post ); $loop = 0;?>

							<div class="flex-bibliografiya">

							<?php foreach ($post as $item) {?>

								<?php
								$loop ++;

								if ( $loop == 1 ) {
									echo '<div class="block-bgb">';
								}
								?>
									<div class="type-bibiliografiya">
										<?php
										$terms = get_the_terms( get_the_ID(), 'cat_rbp' );
										if( is_array( $terms ) ) : ?>
											<ul>
												<?php foreach( $terms as $term ) : ?>
													<li>
														<a href="<?php echo esc_url( get_term_link( $term->term_id, $term->taxonomy ) ); ?>"><?php echo esc_html( $term->name ); ?></a>
													</li>
												<?php endforeach; ?>
											</ul>
										<?php endif; ?>

									</div>
									<div class="title-bibliografiya">
										<a href="<?php echo $item->post_name;?>"> <?php echo $item->post_title;?> </a>
									</div>
								<?php if ( $loop == 3 ) {
									echo "</div>";
									$loop = 0;
								}
								?>
							<?php   } ?>
							</div>
							</div>

					<?php wp_reset_postdata(); ?>
					<?php endif; ?>
					<?php endwhile; ?>
					</div>
				<?php else : ?>
				<?php endif; ?>
0
abumuslim
1.6 года назад
  • 2
    stepan2278 www.weblancer.net/users/stepanko/?affili...

    что вы творите?
    Что находится в переменной $post ?
    Массив???

    Если вы делате такое

    setup_postdata( $post );

    то как тогда там может быть массив???

    Ответ на вопрос:

    если $post - это массив, то чтоб тогда ваш код нужно поправить на

    $terms = get_the_terms( $item->ID, 'cat_rbp' );

    Но нужно убедиться, что в $item - это обьект поста.
    А для этого print_r()

    сделайте $post - чтоб понимать, что в нем - массив или нет.

    abumuslim 1.6 года назад

    Спасибо за помощь. setup_postdata( $post ); из примера самого acf был взят, пост это массив. Спасибо еще раз за помощь

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация