用wp实现ajax,关键其实就是实现一个init钩子函数,init在wp中的加载非常前面,甚至在header信息没有输出之前。因此可以在这加入响应头信息,
用die()退出后面的加载,就变得非常纯粹。
add_action('init', 'fetch_nov');
function fetch_nov() {
if(isset($_GET['url']) && !empty($_GET['url'])) {
header('Content-type: text/json');
$array = array('name'=>'falcon','id'=>'fh170');
echo json_encode($array);
die();
}
下面这段是从网上找到的Ajax加载内容的钩子函数。
function load_post() {
// 如果 action ID 是 load_post, 并且传入的必须参数存在, 则执行响应方法
if($_GET['action'] == 'load_post' && $_GET['id'] != '') {
$id = $_GET["id"];
$output = '';
// 获取文章对象
global $wpdb, $post;
$post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $id));
// 如果指定 ID 的文章存在, 则对他进行格式化
if($post) {
$content = $post->post_content;
$output = balanceTags($content);
$output = wpautop($output);
}
// 打印文章内容并中断后面的处理
echo $output;
die();
}
}
// 将接口加到 init 中
add_action('init', 'load_post');