You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ACF重复器无文件时隐藏WooCommerce自定义产品标签?

解决WooCommerce自定义标签在无文件时不显示的问题

你的问题出在当前判断逻辑仅检查ACF重复器字段letoltheto_katalogusok是否存在,但即便重复器内的行未填写任何文件,get_field()仍会返回包含空行的数组,导致标签依旧显示。

解决方案

修改woostify_custom_tab函数的判断条件,既要确认重复器有行,还要遍历行内容,检查是否存在至少一个有效的文件字段:

add_filter( 'woocommerce_product_tabs', 'woostify_custom_tab' );
function woostify_custom_tab( $tabs ) {
    // 获取重复器字段数据
    $catalogues = get_field('letoltheto_katalogusok');
    $has_valid_file = false;

    // 遍历重复器行,验证是否有非空文件
    if ( $catalogues ) {
        foreach ( $catalogues as $catalogue ) {
            $file = $catalogue['letoltheto_katalogus'];
            $file2 = $catalogue['letoltheto_katalogusa'];
            $file3 = $catalogue['letoltheto_katalogusb'];
            
            // 只要存在一个有效文件,就标记为符合显示条件
            if ( !empty($file) || !empty($file2) || !empty($file3) ) {
                $has_valid_file = true;
                break; // 找到有效文件后停止遍历,提升效率
            }
        }
    }

    // 仅当存在有效文件时,添加自定义标签
    if ( $has_valid_file ) {
        $tabs['tab-catalogues'] = array(
            'title'    => 'Letölthető katalógus',
            'callback' => 'woostify_custom_tab_content',
            'priority' => 25,
        );
    }
    return $tabs;
}

function woostify_custom_tab_content( $slug, $tab ) {
    if (have_rows('letoltheto_katalogusok')) {
        while (have_rows('letoltheto_katalogusok')) {
            the_row();
            $file = get_sub_field('letoltheto_katalogus');
            $file2 = get_sub_field('letoltheto_katalogusa');
            $file3 = get_sub_field('letoltheto_katalogusb');
            ?>
            <br>      
            <div class="katalogusok">
                <?php if ( !empty($file) ) : ?>
                    <a href="<?php echo $file['url']; ?>" target="_blank" ><?php echo $file['filename']; ?></a>
                <?php endif; ?>
                <?php if ( !empty($file2) ) : ?>
                    <a href="<?php echo $file2['url']; ?>" target="_blank" ><?php echo $file2['filename']; ?></a>
                <?php endif; ?>
                <?php if ( !empty($file3) ) : ?>
                    <a href="<?php echo $file3['url']; ?>" target="_blank" ><?php echo $file3['filename']; ?></a>
                <?php endif; ?>
            </div>
            <?php 
        }
    }
}

关键修改说明

  • 标签显示逻辑:新增重复器行遍历验证,只有存在至少一个有效文件时才加载自定义标签。
  • 内容输出优化:给每个文件链接添加非空判断,避免页面出现无效的空<a>标签。

修改后,当重复器内没有任何有效文件时,自定义标签将不再显示。

内容的提问来源于stack exchange,提问作者vicartdesign

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:45:32