我已经在我的网站上使用了联系方式7插件。我想在WordPress仪表板上显示邮寄的数据。为了达到这个目的,我使用了一个叫做"Contact Form CFDB7“的插件。我的表单有下拉字段。它是有条件地表现出来的。(例如,一个字段是country,另一个字段是states,因此如果选择country作为US,则state字段仅列出美国的州。这是通过使用插件“contact Form7 conditional fields.”获取的。)因此,当发送邮件时,它将列出仪表板.its中的所有数据,其中既有空字段,也有填充字段。因此,我的问题是在仪表板中只显示已填充字段的任何选项。
请帮我解决同样的问题。问候
发布于 2018-03-04 02:14:16
我发现了一个过滤器,在将表单数据保存到数据库之前,您可以使用它来删除空值。
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错误日志并从那里复制错误。
https://stackoverflow.com/questions/49087192
复制相似问题