我有 AJAX 脚本发送表单,我想另外运行update_post_ meta()函数,如果成功。我假设我可以在ajax_response. php文件中这样做,但这不是wordpress文件,所以wordpress函数在那里不工作。在这个ajax脚本中,哪种方式更好地运行这个脚本(下面),或以某种方式在ajax_response.php(但如何初始化wordpress在这个文件中?)脚本下面是wordpress页面内.
$('#postForm').submit(function(e) {
e.preventDefault();
grecaptcha.ready(function () {
grecaptcha.execute('6Lcg9l8jAAAAAAp4KIczCJ8N_xkOezJt7LngYVgu', { action: 'submit' }).then(function (token) {
$("#googleResponse").val(token);
$.ajax({
url: '/wp-content/themes/zaproszenie/ajax_response.php',
type: 'post',
data: $('#postForm').serialize(),
dataType: 'json',
success: function(data){
if(data.response == 'success')
{
$("#response").css('border','1px solid green');
$("#response").css('background','#ffffff');
$("#response").text(data.msg);
}
else
{
$("#response").css('border','1px solid red');
$("#response").css('background','#ffffff');
$("#response").text(data.msg);
}
}
});
});
});
});
1条答案
按热度按时间but5z9lq1#
在主题或插件中包含非WordPress的php程序是很困难的,也是不安全的。一些安全系统会阻止访问此类程序。
在2022年,您最好的选择是使用WordPress's REST API来实现这一点。
您可以这样做:
在客户端Javascript中,使用
url: /wp-json/zaproszenie/v1/captcha
发布表单。在本例中,zaproszenie/v1
称为 namespace,captcha
称为 base route。在你的主题中,你用这样一个类来实现它。你将把这个类放在一个名为
class-zaproszenie-controller.php
的文件中。然后,在主题初始化代码的某个地方,执行以下操作:
而你