WordPress ACF, передающий переменную в качестве значения в массив args

#php #wordpress #advanced-custom-fields

#php #wordpress #дополнительно-пользовательские поля

Вопрос:

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

Значением $subfield является recipe . По какой-то причине, когда я пишу ‘post_type’ => $subfield, это не работает. Это работает только тогда, когда я его жестко кодирую. Любая информация о том, почему моя переменная $subfield пуста, когда я передаю ее как значение в ‘post_type’

 <?php 



if ( 
get_row_layout() == 'list_posts' ) {

// $subfield = the_sub_field( 'custom_post_type' );
// this variable has a string value of recipe in the backend

    
$args = array(
  'post_type'   => 'recipe' //works when hardcoded, not when $subfield is passed
 );


 $the_query = new WP_Query($args );

 if (
 $the_query->have_posts() )
 :while (
 $the_query->have_posts() )
 : $the_query->the_post();
 ?>

  <a href="<?php echo the_permalink();?>">
     <?php echo the_title();?>
  </a>

  

  <?php wp_reset_postdata();
      endwhile;
      endif;
    } 

  ?>
  

Ответ №1:

Согласно документу ACF: the_sub_field() отображает значение определенного значения подполя из цикла повторителя или гибкого поля содержимого. Эта функция по сути такая же, как echo get_sub_field() . Таким образом, он не вернет ожидаемое значение $subfield переменной. Давайте get_sub_field() вместо этого используем:

 $subfield = get_sub_field( 'custom_post_type' );
  

В мире WordPress существует неявное соглашение: имена функций, отображающих значения, будут начинаться с the_ , а имена функций, возвращающих значения, будут начинаться с get_ .