我试图在Wordpress主题中使用AJAX调用联系人表单7表单。理想情况下,我希望使用Contact Form 7快捷码来实现这一点,但在使用AJAX调用时,do\\u快捷码似乎不是一个可用的函数(它只是呼应了快捷码本身)。
我偶然发现了这个问题:Why might a plugin's 'do_shortcode' not work in an AJAX request?
这正是我的问题!然而,提供的解决方案对我不起作用,我很确定我是以与原始帖子相同的方式实现的:
add_action( \'init\', create_function(\'\', \'register_shortcode_ajax( "cl_contact_us", "cl_contact_us" ); \'));
function register_shortcode_ajax( $callable, $action ) {
if ( empty( $_POST[\'action\'] ) || $_POST[\'action\'] != $action )
return;
call_user_func( $callable );
}
function cl_contact_us() {
echo do_shortcode( \'[contact-form-7 id="7" title="Contact form 1"]\' );
die();
}
我唯一需要改变的是如何从add\\u action函数调用匿名函数(出于某种原因,使用传统的匿名函数不起作用,但使用PHP函数效果很好)。
除了上述内容之外,唯一根本不同的是jQuery AJAX调用,但我相信它基本上是一样的。。。
var ajaxurl = \'<?php echo admin_url(\'admin-ajax.php\'); ?>\';
$(document).ready(function(){
$(\'a#contact-button\').click(event, function() {
event.preventDefault();
$.post(
ajaxurl,
{
\'action\':\'cl_contact_us\',
},
function(response) {
$(\'#form\').append(response);
});
});
});
这成功地执行了一个AJAX调用,但它仍然只是回显了短代码,而不是表单。
我希望这是足够的信息,如果你需要更多的信息,我会整天都在这里:)非常感谢你的帮助。谢谢