WordPress — Вставка гибкого php ACF в облегчение переполнения стека ползунка

Я использую 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 );
} ?>

1

Решение

Первый, 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() код.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]