插入灵活的ACF php到滑动器php



我正在使用Easing Slider Pro用于幻灯片和高级自定义字段来构建自定义页面布局。我不明白为什么ACF & &;Easing PHP只输出我想要插入到页面中的滑块的ID号,而不是滑块本身。

我发现了这个旧线程,它有同样的问题,但它是常规的ACF,而不是一个灵活的内容字段:PHP中的Wordpress 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; ?>

我试过用get_sub_field切换the_sub_field,但这甚至没有输出ID。我是PHP新手,如果我错过了一些简单的东西,我不会感到惊讶,但是什么呢?提前感谢!

更新:谢谢Hobo!根据您的建议,我测试了ES函数(它有效),并发现两者"echo get_sub_field('easing_slider_shortcode')"one_answers"print_r(get_sub_field('easing_slider_shortcode'))"带回了滑块的ID号,没有额外的代码。我已经仔细检查了伸缩字段、字段和子字段的名称,它们都是正确的。

我不知道这是否有助于建议问题是什么,但我通过ACF的管理端前置和追加功能在ES ID号周围添加了PHP代码,但它没有在页面上回显代码。

更新二第二次尝试成功了——谢谢Hobo!如果将来有人遇到这个问题,下面是我的最终代码:

<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>

如果看起来OK,您知道get_sub_field()返回的值有问题。如果看起来不正确,请检查您使用了正确的ID。

假设问题是由get_sub_field()返回的值,您将需要检查它只返回一个整数,而不是(说)在额外的HTML中包装的整数(名称的_shortcode部分在这方面让我担心)。所以这一次,只回显返回的值,而不调用easingslider()函数,例如

<div class="col-md-6">
    <h2>Sliders</h2>
    #<?php echo get_sub_field('easing_slider_shortcode'); ?>#
</div>

然后查看生成的页面源(例如Chrome中的Ctrl-U),并看看#符号之间的区别。如果除了ID之外还有其他内容,请检查字段定义并确保它只是一个数字。如果没有,试试

<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()代码的某个地方有类型检查

相关内容

  • 没有找到相关文章

最新更新