#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_
.