Woocommerce 商店页面上的 ACF 自定义小部件中继器

问题描述

我对 ACF 自定义小部件有一个大问题,我想使用 WooCommerce 平台商店页面侧边栏显示的 ACF Pro 设置中继器样式。问题是 - 它不起作用。它不会在 page_slider 中显示名为“photoTest”的图像 sub_field。

我下载了小部件并试图找出这个问题,但我不知道问题出在哪里.. ACF 规则与小部件相关联,在函数中有一个自定义小部件的绝对路径,但我认为问题可能使用自定义小部件本身,所以这里是代码

<?PHP
class ACF_Custom_Widget extends WP_Widget {
    function __construct() {
        parent::__construct(
            'acf_custom_widget',__('ACF Custom Widget','text_domain'),array( 'description' => __( 'A custom ACF widget','text_domain' ),'classname' => 'acf-custom-widget' ) // Args
        );
    }

    public function widget( $args,$instance ) {
        echo $args['before_widget'];
        if ( !empty($instance['title']) ) {
            echo $args['before_title'] . apply_filters( 'widget_title',$instance['title'] ). $args['after_title'];
        }
        echo get_field('title','widget_' . $args['widget_id']);?>

<?PHP
    
    if ( is_shop() ){
        $page_id = get_option( 'woocommerce_shop_page_id' ); 
    }
    else {
        $page_id = get_the_ID();
    }

if( have_rows('page_sliders',$page_id) ): ?>

    <div id="carouselControls" class="carousel slide" data-ride="carousel">
        <div class="carousel-inner">
            <?PHP while( have_rows('page_sliders',$page_id) ): the_row(); 
                // vars
                $image = get_sub_field('photoTest',$page_id);
                ?>
                <div class="photo-wrap">
                <img src="<?PHP echo esc_url($image['url']); ?>" alt="<?PHP echo esc_attr($image['alt']); ?>" />
                </div>
            <?PHP endwhile; ?>
        </div>
    </div>

<?PHP endif; ?>

       <?PHP
        echo $args['after_widget'];
    }

    public function form( $instance ) {
        if ( isset($instance['title']) ) {
            $title = $instance['title']; 
        }
    ?>
    <p>
      <label for="<?PHP echo $this->get_field_id( 'title' ); ?>"><?PHP _e( 'Title' ); ?></label>
      <input class="widefat" id="<?PHP echo $this->get_field_id( 'title' ); ?>" name="<?PHP echo $this->get_field_name( 'title' ); ?>" type="text" value="<?PHP echo esc_attr( $title ); ?>">
    </p>
    <?PHP
    }

    public function update( $new_instance,$old_instance ) {
        $instance = array();
        $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
        return $instance;
    }
} 
add_action( 'widgets_init',function(){
  register_widget( 'ACF_Custom_Widget' );
});

请帮忙..谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)