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

时间:2018-03-03 17:40:17

标签: wordpress contact-form-7

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

请帮我解决问题。 此致

1 个答案:

答案 0 :(得分: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错误日志并从那里复制错误。