联系表 7:wpcf7_form_response_output 过滤器
Contact Form 7: wpcf7_form_response_output filter
请问wpcf7_form_response_output过滤器(在includes/contact-form.php中找到)如何使用?
以下是我试过但无济于事的方法。
============== 案例一 ============
函数 1:
$wpcf7->skip_mail = true;
$content = __('You have already subscribed to our Events.',CURRENT_THEME);
$class = 'wpcf7-validation-errors';
custom_wpcf7_form_response_output_filter('', $class, $content, '');
函数 2
if(!function_exists('custom_wpcf7_form_response_output_filter')){
function custom_wpcf7_form_response_output_filter($output, $class, $content, $this){
return '<div class="' . $class . ' ">' . $content . '</div>';
}
add_filter( 'wpcf7_form_response_output', 'custom_wpcf7_form_response_output_filter', 10, 4);
}
========== 案例2 ==============
$wpcf7->skip_mail = true;
$class = 'wpcf7-validation-errors';
$error = __('You have already subscribed to our Events.',CURRENT_THEME);
$output = '<div class="' . $class . ' ">' . esc_html( $error ) . '</div>';
$omsg = 'return "'. $output .'";';
add_filter('wpcf7_form_response_output', create_function('$a', $omsg));
案例2:另一种方法也不行。使用时出现 500 Internal Server Error。
这里有什么帮助吗?
看起来钩子没有附加/未在正确的时间触发。
编辑
此线程中描述的挂钩在进行 AJAX 调用时不会可靠地触发。我们决定改用 JS 来做。这里有一些代码可以帮助其他人looking/facing解决类似的问题
$( document ).ajaxComplete(function() {
str=$(".wpcf7-response-output").html();
if (str.indexOf("error") >= 0)
$(".wpcf7-response-output")
.removeClass("wpcf7-mail-sent-ok")
.addClass("wpcf7-validation-errors");
});
请问wpcf7_form_response_output过滤器(在includes/contact-form.php中找到)如何使用?
以下是我试过但无济于事的方法。
============== 案例一 ============
函数 1:
$wpcf7->skip_mail = true;
$content = __('You have already subscribed to our Events.',CURRENT_THEME);
$class = 'wpcf7-validation-errors';
custom_wpcf7_form_response_output_filter('', $class, $content, '');
函数 2
if(!function_exists('custom_wpcf7_form_response_output_filter')){
function custom_wpcf7_form_response_output_filter($output, $class, $content, $this){
return '<div class="' . $class . ' ">' . $content . '</div>';
}
add_filter( 'wpcf7_form_response_output', 'custom_wpcf7_form_response_output_filter', 10, 4);
}
========== 案例2 ==============
$wpcf7->skip_mail = true;
$class = 'wpcf7-validation-errors';
$error = __('You have already subscribed to our Events.',CURRENT_THEME);
$output = '<div class="' . $class . ' ">' . esc_html( $error ) . '</div>';
$omsg = 'return "'. $output .'";';
add_filter('wpcf7_form_response_output', create_function('$a', $omsg));
案例2:另一种方法也不行。使用时出现 500 Internal Server Error。
这里有什么帮助吗?
看起来钩子没有附加/未在正确的时间触发。
编辑
此线程中描述的挂钩在进行 AJAX 调用时不会可靠地触发。我们决定改用 JS 来做。这里有一些代码可以帮助其他人looking/facing解决类似的问题
$( document ).ajaxComplete(function() {
str=$(".wpcf7-response-output").html();
if (str.indexOf("error") >= 0)
$(".wpcf7-response-output")
.removeClass("wpcf7-mail-sent-ok")
.addClass("wpcf7-validation-errors");
});