用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');
- EOF -