如果您只需将脚本直接添加到主体中,而不是AJAX调用,那么它将变得更好、更容易。
短代码结果也是如此。只需使用短代码作为内部参数wp_localize_script()
:
wp_localize_script( \'script-handle\', \'pluginObject\', array(
\'contactForm\' => do_shortcode( \'[contact-form-7 id="698" title="Meet The Team Email"]\' ),
) );
然后,在jQuery AJAX处理程序中,执行您需要执行的任何操作,例如插入联系人表单。
( function( $, plugin ) {
$.ajax( {
url : plugin.ajaxurl,
data : {
action : plugin.action,
_ajax_nonce : plugin._ajax_nonce,
data : {
plugin.contactForm
}
},
beforeSend : function( d ) {
console.log( \'Before send\', d );
}
} )
.done( function( response, textStatus, jqXHR ) {
console.log( \'AJAX done\', textStatus, jqXHR, jqXHR.getAllResponseHeaders() );
// this.processAJAXResponse( response );
} )
.fail( function( jqXHR, textStatus, errorThrown ) {
console.log( \'AJAX failed\', jqXHR.getAllResponseHeaders(), textStatus, errorThrown );
} )
.then( function( jqXHR, textStatus, errorThrown ) {
console.log( \'AJAX after finished\', jqXHR, textStatus, errorThrown );
} );
} )( jQuery, pluginObject || {} );
现在,您应该可以访问AJAX回调中的呈现表单,也可以访问JavaScript AJAX处理程序中的呈现表单。
为什么你的问题是AJAX请求总是管理请求,即使是公开的。由于管理页面上没有短代码的输出,所以也只有字符串返回值。
Rule: Never try to run shortcodes inside AJAX or Admin requests.
<其他注意事项:不要在AJAX回调中添加脚本。这根本不是正确的做法。传递值-如上所述-使用
wp_localize_script()
. 短代码通常只是一些API的包装。永远不要使用短代码-而是使用APi。来自的问候
Stephen Harris 刚刚告诉我的
in chat 我应该告诉你