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

问题描述 投票:0回答:1

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

请帮我解决问题。问候

wordpress contact-form-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错误日志并从那里复制错误。

© www.soinside.com 2019 - 2024. All rights reserved.