【问题标题】:WordPress Contact form 7 form field hiding when data is nullWordPress联系表格7表单字段在数据为空时隐藏
【发布时间】:2018-08-11 17:38:07
【问题描述】:

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

请帮助我解决同样的问题。 问候

【问题讨论】:

    标签: wordpress contact-form-7


    【解决方案1】:

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

    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;
    } );
    

    这个 sn-p 将适用于旧版本的 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 错误日志并从那里复制错误。

    【讨论】:

    • 嗨@joe Dooley。感谢您的信息。我们可以在哪里添加这个片段?我在functions.php文件中进行了测试,添加它时网站没有加载。
    • 嗨@abu。你知道你的服务器运行的是什么版本的 PHP 吗?如果小于 7+,则代码 sn-p 将引发错误。我已经修改了 sn-p 以支持早期版本的 PHP。让我知道这是否能解决问题。如果不能,您可以截屏您得到的错误吗?或者打开您的 PHP 或 WordPress 错误日志,告诉我错误是什么。谢谢。
    • 嗨@joe Dooley我已经在functions.php中测试了上面的代码然后邮件功能正在工作。但在仪表板中不显示邮寄的数据。我的意思是它的空白。请检查我的截图我的 PHP 版本是:screencast.com/t/cHaqPjJid。添加上述代码后的插件仪表板视图:screencast.com/t/c6cuEB1Rt1 请让我知道问题。
    • 我添加了插件的后端截图并面临问题。请检查链接以了解我的问题。 screencast.com/t/hTK4D4eaT
    猜你喜欢
    • 1970-01-01
    • 2017-12-19
    • 2017-06-23
    • 2019-11-17
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多