如何使用AJAX调用中的WP函数。我已经查看了创建使用ajax的插件的文档,但我无法弄清楚如何将其应用于常规页面和帖子。
有没有一种简单的方法可以在不使用API的情况下加载所有内容?我有自己的方式,我喜欢做ajax而宁愿不使用他们的东西。
这是我的代码的漏洞版本:
Javascript(jQuery):
$('.action.next_posts').click(function() {
var last_date = $(this).attr('title');
//alert();
$.ajax({
url: WP_DIR+'functions.php?action=get_next_posts',
type: 'POST',
data: {date : last_date},
success: function(response) {
alert(response);
},
error: function(error) {
alert("error");
}
});
});
Functions.php(PHP):
// AJAX controller
if(isset($_GET['action'])) {
require_once('../../../wp-config.php');
require_once('../../../wp-includes/classes.php');
require_once('../../../wp-includes/functions.php');
wp();
echo 'ok';
echo bloginfo('name'); // NOT WORKING. TRIED adding actions..
return;
}
答案 0 :(得分:2)
以下解决方案应该有效。您将继续直接发布到WordPress安装并在WordPress执行通常所做的所有查询之前拦截请求。这个方法有一些注意事项,其中一个是一些缓存方法会干扰它,但它应该可以很好地用于你的目的。
此外,你说你不想使用指定的WordPress API,所以这应该在你的小巷里。
JavaScript的:
jQuery(document).ready(function($) {
$('.action.next_posts').click(function(event) {
event.preventDefault();
var last_date = $(this).attr('title');
$.ajax({
url: '/',
type: 'post',
data: {date : last_date, action: 'get_next_posts'},
success: function(response) {
alert(response);
},
error: function(error) {
alert("error");
}
});
});
});
的functions.php
add_action('parse_request','my_request_parser');
function my_request_parser($wp) {
if( 'get_next_posts' == $_POST['action'] ) {
echo 'ok';
bloginfo('name');
exit();
}
}