首页 文章

当数据为空时,WordPress联系表单7表单字段隐藏

提问于
浏览
0

我在我的网站上使用了联系表格7插件 . 我想在WordPress仪表板上显示邮寄的数据 . 为了得到这个,我使用了一个名为“联系表格CFDB7”的插件 . 我的表格有下拉字段 . 它的表现有条件 . (例如,一个字段是国家,另一个字段是州,所以如果选择国家为美国,那么州字段仅列出美国州 . 这是通过使用插件“联系表格7条件字段”来实现的 . ) . 所以在发送邮件时,它会列出仪表板中的所有数据 . 它们有空字段和填充字段 . 所以我的问题是只显示仪表板中填充字段的任何选项 .

请帮我解决问题 . 问候

1 回答

  • 0

    我找到了一个过滤器,您可以使用该过滤器在将表单数据保存到数据库之前删除空值 .

    cfdb7_before_save_data过滤器应该可以解决问题 .

    这是未经测试但它应该工作 . 你也可以换掉循环并使用像 array_filter() 这样的东西来清理代码 . 另外,如果您不使用PHP 7,请删除返回类型提示 .

    /**
     * Removes null values and empty strings from form data before it's saved
     * into the database.
     *
     * @link   https://stackoverflow.com/questions/49087192/wordpress-contact-form-7-form-field-hiding-when-data-is-null
     *
     * @param  array $form_data
     *
     * @return array $form_data 
     */
    add_filter( 'cfdb7_before_save_data', function ( array $form_data ): array {
    
        foreach ( $form_data as $key => $value ) {
            if ( null === $value || '' === $value ) {
                unset( $form_data[ $key ] );
            }
        }
    
        return $form_data;
    } );
    

    此代码段适用于旧版本的PHP . 您可以将它放在functions.php的底部 .

    /**
     * Removes null values and empty strings from form data before it's saved
     * into the database.
     *
     * @link   https://stackoverflow.com/questions/49087192/wordpress-contact-form-7-form-field-hiding-when-data-is-null
     *
     * @param  array $form_data
     *
     * @return array $form_data
     */
    function prefix_or_namespace_filter_cfdb7_before_save_data( array $form_data ) {
    
        foreach ( $form_data as $key => $value ) {
            if ( null === $value || '' === $value ) {
                unset( $form_data[ $key ] );
            }
        }
    
        return $form_data;
    }
    
    add_filter( 'cfdb7_before_save_data', 'themeprefix_filter_cfdb7_before_save_data', 999 );
    

    如果您仍然收到错误,请提供错误消息的屏幕截图或打开您的PHP或WordPress错误日志并从那里复制错误 .

相关问题