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

Elementor Pro动态加载表单Select字段时的异常问题求助

问题分析与解决方案

你的问题出在过滤器的返回逻辑上:当处理的不是目标表单或目标Select字段时,你直接return;(返回空值),但Elementor的elementor_pro/forms/render/item/select过滤器要求必须始终返回处理后的$item参数,否则其他表单的Select字段会因为没有获取到正确的字段数据而在前端消失。

另外还有个潜在问题:如果数据库查询没有返回结果,$items变量会未定义,导致PHP报错。

修正后的代码

add_filter('elementor_pro/forms/render/item/select', function( $item, $index, $form ) {
    // 只处理目标表单和目标字段
    if ( 'groupform' === $form->get_settings_for_display( 'form_name' ) && 'partner_select' === $item['custom_id'] ) {
        global $wpdb;
        
        // 初始化$items数组,避免无数据时的未定义变量错误
        $items = [];
        $results = $wpdb->get_results( "SELECT tag_id, tag_name FROM wp_gh_tags WHERE `tag_slug` LIKE '%-partner%'" );

        foreach ( $results as $row ) {
            $items[] = $row->tag_name.'|'.$row->tag_id;
        }

        $item['field_options'] = implode("\n", $items);
    }

    // 无论是否处理,都返回原$item或修改后的$item
    return $item;
}, 10, 3 );

关键修改点

  • 移除了else分支的空返回,改为始终在函数末尾返回$item:非目标表单/字段时,直接返回原始的$item参数,保证其他Select字段正常渲染
  • 提前初始化$items = []:防止数据库查询无结果时出现Undefined variable $items的PHP警告,同时确保implode能正常执行

内容的提问来源于stack exchange,提问作者M.Green

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:42:36