您需要创建一个WordPress函数来加载帖子内容,并将其挂接到wp\\u ajax\\u nopriv中。您还需要jQuery ajax函数通过ajax将$\\u POST数据发送到WordPress函数,并将返回的内容输出到您想要显示的空div中。
一种简单的方法是在类或ID div标记中使用post ID,这样就可以使用jQuery轻松地将其取出。
使用Steven答案中的边栏代码的示例:
echo \'<ul id="sidebar-ajax">\';
foreach($sidebar_posts as $post):
echo \'<li id="\' .get_the_ID(). \'">\';
echo \'<a class="ajax-click" href="#">.\'get_the_title().\'</a>\';
the_title(\'<h3>\',\'</h3>\');
echo \'</li>\';
endforeach;
echo \'</ul>\';
示例jQuery(这应该在单独的文件中,并使用
wp_enqueue_script
因此,可以使用以下表达式将ajax url定义为javascript命名空间变量
wp_localize_script
:
将脚本排队并设置ajax url变量:
wp_enqueue_script( \'my-ajax-request\', plugin_dir_url( __FILE__ ) . \'js/ajax.js\', array( \'jquery\' ) );
wp_localize_script( \'my-ajax-request\', \'MyAjax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
ajax的内容。js文件:
jQuery(document).ready(function($) {
$(".ajax-click").click(function() {
$("#loading-animation").show();
var post_id = $(this).parent("li").attr("id");
var ajaxURL = MyAjax.ajaxurl;
$.ajax({
type: \'POST\',
url: ajaxURL,
data: {"action": "load-content", post_id: post_id },
success: function(response) {
$("#empty_div_in_content").html(response);
$("#loading-animation").hide();
return false;
}
});
});
)};
*注意:在帖子最终显示的位置添加加载动画图形,并给它一个div id“;加载动画“;并将其设置为显示:无。
WordPress函数将帖子内容返回到ajax调用:
add_action ( \'wp_ajax_nopriv_load-content\', \'my_load_ajax_content\' );
function my_load_ajax_content () {
$post_id = $_POST[ \'post_id\' ];
$post = get_post( $post_id, OBJECT);
$response = apply_filters( \'the_content\', $post->post_content );
echo $response;
die(1);
}