WordPress - Получение ACF post_object внутри wp_query - PullRequest
0 голосов
/ 28 января 2020

Можно ли использовать поле post_object внутри пользовательского wp_query? Я создал шаблон для перечисления всех сообщений в блоге и получения различного контента, получая post_format. В одном из форматов я хочу получить post_object из типа пользовательской записи, который я создал. То, с чем я борюсь, это получение значений полей ACF из этого поста, даже если я передаю второй параметр (ID) в the_field(), он всегда дает мне запасной вариант, например, для даты, она всегда показывает мне сегодняшнюю дату.

Вот код запроса:

$args = array(  
      'post_type' => 'post',
      'post_status' => 'publish'
  );

$loop = new WP_Query( $args ); 
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post(); 
?>

     <?php get_template_part( 'template-parts/content', get_post_format() ); ?>

<?php
        endwhile;

        wp_reset_postdata();  ?>
    <?php else : ?>
      <p><?php esc_html_e( 'There is no post to display' ); ?></p>
    <?php endif; ?>

В php файле формата ссылки Я проверяю, проверяет ли пользователь, что он хочет загрузить сообщение из CPT или ввести информацию вручную. Как видите, поля HTML и ACF одинаковы, просто если пользователь проверяет это поле, весь контент загружается из CPT

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

  <a href="<?php echo get_permalink(); ?>">
   <h4><strong><?php the_title(); ?></strong></h4>
 </a>
<?php 
if ( get_field( 'dafed_promo' ) == 1 ) :
  $post_object = get_field( 'choose_dafed' );
  if ( $post_object ):
     $post = $post_object;
     setup_postdata( $post ); ?> 

  <?php if ( have_rows( 'event_details' ) ) : ?>
     <?php while ( have_rows( 'event_details' ) ) : the_row(); ?>
      <div class="event-info">
         <p></p>
               <?php  // Load field value and convert to numeric timestamp.
                $unixtimestampdafed = strtotime( get_sub_field( 'event_time_and_date' ) );
             ?>
               <div class="date">
                <div class="month"> <?php echo date_i18n( "M", $unixtimestampdafed ); ?></div>
                <div class="number"><?php echo date_i18n( "d", $unixtimestampdafed ); ?></div>
              </div>

        <p>
          <strong>Vreme: </strong> <?php the_sub_field( 'event_time' ); ?><br>
          <strong>Lokacija: </strong><?php the_sub_field( 'event_location' ); ?><br>
          <strong>Organizator: </strong> <?php the_sub_field( 'event_organizer' ); ?>
        </p>
      </div>
      <span class="path"><strong><a>
       <?php echo get_the_author(); ?></a></strong> / <?php echo get_the_date(); ?>/ 
         <strong>
          <?php 
            $post_id  = get_the_ID();
            $post_categories = get_the_category( $post_id );
            foreach  ($post_categories as $category) {
              echo  '<a class="category-name">' . $category->cat_name . '</a> ';
            }
          ?>
       </strong>
       </span>
      <?php the_excerpt(); ?>

    <?php endwhile; ?>
    <?php endif; ?>
  <a href="<?php echo get_permalink(); ?>" class="btn btn-border">Pročitaj više</a>
  <?php wp_reset_postdata(); ?>
  <?php endif; ?>


<?php else : ?> 

  <?php if ( have_rows( 'event_details' ) ) : ?>
     <?php while ( have_rows( 'event_details' ) ) : the_row(); ?>
      <div class="event-info">
         <p></p>
               <?php  // Load field value and convert to numeric timestamp.
                $unixtimestamp = strtotime( get_sub_field( 'event_time_and_date' ) );
             ?>
               <div class="date">
                <div class="month"> <?php echo date_i18n( "M", $unixtimestamp ); ?></div>
                <div class="number"><?php echo date_i18n( "d", $unixtimestamp ); ?></div>
              </div>

        <p>
          <strong>Vreme: </strong> <?php the_sub_field( 'event_time' ); ?><br>
          <strong>Lokacija: </strong><?php the_sub_field( 'event_location' ); ?><br>
          <strong>Organizator: </strong> <?php the_sub_field( 'event_organizer' ); ?>
        </p>
      </div>
      <span class="path"><strong><a>
       <?php echo get_the_author(); ?></a></strong> / <?php echo get_the_date(); ?>/ 
         <strong>
          <?php 
            $post_id  = get_the_ID();
            $post_categories = get_the_category( $post_id );
            foreach  ($post_categories as $category) {
              echo  '<a class="category-name">' . $category->cat_name . '</a> ';
            }
          ?>
       </strong>
       </span>
      <?php the_excerpt(); ?>

    <?php endwhile; ?>
    <?php endif; ?>
  <a href="<?php echo get_permalink(); ?>" class="btn btn-border">Pročitaj više</a>
...