我在我的网站上使用了联系表单7插件。我想在WordPress仪表板上显示邮寄的数据。为了得到这个,我使用了一个名为“联系表格CFDB7”的插件。我的表格有下拉字段。它表现出条件。 (例如,一个字段是国家,另一个字段是州,所以如果选择国家为美国,那么州字段仅列出美国州。这是通过使用插件“联系表格7条件字段”来实现的。)。因此,在发送邮件时,它将列出仪表板中的所有数据。具有空字段和填充字段。所以我的问题是只显示仪表板中填充字段的任何选项。
请帮我解决问题。 此致
答案 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错误日志并从那里复制错误。