Я использую Easing Slider Pro для слайд-шоу и расширенных настраиваемых полей для создания собственного макета страницы. Я не могу понять, почему АКФ & Облегчение PHP выводит только номер ID слайдера, который я хочу вставить на страницу, а не сам слайдер.
Я нашел этот старый поток, который имеет ту же проблему, но для обычного ACF, а не для гибкого поля содержимого: WordPress PHP в PHP — Кроме того, рекомендуемый код вывода ES немного изменился, как выглядит слайдер 159:
<?php if ( function_exists( 'easingslider' ) ) { easingslider( 159 ); } ?>
Вот мой код, который отлично работает для фотографий и текстов:
<?php while(the_flexible_field('flex_field')): ?>
<?php if(get_row_layout() == 'photo'): ?>
<div class="col-md-6">
<h2>Photos</h2>
<img src='<?php the_sub_field('photo-stack_image'); ?>' class="img-responsive" />
<BR><BR>
<img src='<?php the_sub_field('photo-stack_image2'); ?>' class="img-responsive" />
</div>
<?php elseif( get_row_layout() == 'text' ): ?>
<div class="col-md-6">
<h2>Texts</h2>
<?php the_sub_field('text_field');?>
</div>
<?php elseif(get_row_layout() == 'slider'): ?>
<div class="col-md-6">
<h2>Sliders</h2>
<?php if ( function_exists( 'easingslider' ) )
{ easingslider( the_sub_field('easing_slider_shortcode') ); } ?>
</div>
<?php endif; ?>
<?php endwhile; ?>
Я попытался переключить the_sub_field с помощью get_sub_field, но это даже не выдает ID. Я новичок в PHP и не удивлюсь, узнав, что я упустил что-то простое, но что? Заранее спасибо!
Обновить: Спасибо, Хобо! В соответствии с вашими предложениями, я протестировал функцию ES (она работает) и обнаружил, что и «echo get_sub_field (‘easing_slider_shortcode’)», и «print_r (get_sub_field (‘easing_slider_shortcode’))» вернули только идентификационный номер слайдера, с без дополнительного кода. Я дважды проверил имена гибкого поля, поля и подполя, и все они правильные.
Я не знаю, помогает ли это предположить, в чем проблема, но я добавил код PHP вокруг номера ES ID с помощью функции добавления и добавления на стороне администратора ACF, но он не отражал код на странице.
Обновление Два Эта вторая попытка сделала свое дело — спасибо, Хобо! Вот мой окончательный код, если у кого-то возникнет эта проблема в будущем:
<div class="col-md-6">
<?php elseif(get_row_layout() == 'slider'): ?>
<?php if ( function_exists( 'easingslider' ) ) {
$slider_id = (int) get_sub_field('easing_slider_shortcode');
easingslider( $slider_id );
} ?>
Первый, get_sub_field()
почти наверняка то, что вы хотите. the_sub_field()
выведет значение сразу; использование get_sub_field()
когда вы хотите использовать значение в другой функции.
Теперь вы захотите отладить, связана ли проблема с easingslider()
функция или значение, возвращаемое get_sub_field()
,
Чтобы проверить easingslider()
функция, просто замените функцию ACF на значение, которое она возвращает, например
<div class="col-md-6">
<h2>Sliders</h2>
<?php if ( function_exists( 'easingslider' ) )
{ easingslider( 159 ); } ?>
</div>
Если все выглядит хорошо, вы знаете, что проблема со значением, возвращаемым get_sub_field()
, Если это не выглядит правильно, убедитесь, что вы используете правильный идентификатор.
Предполагая, что проблема со значением, возвращаемым get_sub_field()
вы захотите проверить, что он возвращает только целое число, а не (скажем) целое число, заключенное в дополнительный HTML ( _shortcode
часть имени беспокоит меня на этом фронте). Так что на этот раз просто повторить возвращаемое значение без вызова easingslider()
функция, например
<div class="col-md-6">
<h2>Sliders</h2>
#<?php echo get_sub_field('easing_slider_shortcode'); ?>#
</div>
Затем просмотрите сгенерированный источник страницы (например, Ctrl-U
в Chrome), и посмотрим, что между #
символы. Если есть что-то кроме идентификатора, проверьте определение своего поля и убедитесь, что это только число. Если ничего нет, попробуйте
<div class="col-md-6">
<h2>Sliders</h2>
#<?php print_r(get_sub_field('easing_slider_shortcode')); ?>#
</div>
что даст вам более подробную информацию о том, что PHP хранит. Увидеть документация print_r.
Если ничего не найдено, проверьте, правильно ли указано имя поля.
Если этот процесс не поможет вам найти проблему, обновите ваш вопрос тем, что вы нашли.
Обновить
Спасибо за ваше обновление. Я немного сбит с толку, почему это не работает, но есть еще несколько вещей, которые можно попробовать. Я не использовал функцию добавления и добавления на стороне администратора ACF, поэтому я не уверен, является ли отсутствие значения отраженного сигнала проблемой.
Во-первых, есть ли какие-либо сообщения или ошибки в ваших логах PHP? Если есть, это может помочь отладить проблему.
Далее проверьте easingslider()
может принимать переменную в качестве аргумента. Я не могу понять, почему это не так, но я не могу понять, почему то, что у вас есть, не работает …
<div class="col-md-6">
<h2>Sliders</h2>
<?php if ( function_exists( 'easingslider' ) ) {
$slider_id = 159 ;
easingslider( $slider_id );
} ?>
</div>
Если это работает, попробуйте
<div class="col-md-6">
<h2>Sliders</h2>
<?php if ( function_exists( 'easingslider' ) ) {
$slider_id = (int) get_sub_field('easing_slider_shortcode');
easingslider( $slider_id );
} ?>
</div>
Может быть, есть проверка типа где-то в easingslider()
код.
Других решений пока нет …