你可以使用jQuery ajax
,好吧,一步一步地按照我的指示来做。
1.在你的主题文件夹中创建一个文件夹js
,假设你的主题文件夹是二十二,那么应该是
http://yourDomain.com/wp-content/themes/twentytwelve/js
2.在你的文件中创建一个文件js folder
并命名myScript.js
3.在你的functions.php
文件中添加
add_action('wp_enqueue_scripts','my_theme_scripts_function');
function my_theme_scripts_function() {
wp_enqueue_script('myScriptHandler', get_stylesheet_directory_uri() . '/js/myScript.js');
wp_localize_script( 'myScriptHandler', 'myAjax', array( 'ajaxUrl' => admin_url( 'admin-ajax.php' ) ) );
}
4.还在你的functions.php
function do_myAjaxFunction()
{
$post_id = url_to_postid($_POST['post_url']);
$post = get_post( $post_id, OBJECT);
$response = apply_filters( 'the_content', $post->post_content );
echo $response;
die();
}
add_action( 'wp_ajax_nopriv_myAjaxHandler', 'do_myAjaxFunction' );
add_action( 'wp_ajax_myAjaxHandler', 'do_myAjaxFunction' );
5.现在在myScript.js
文件中,添加以下代码
$('.your_post-entry a').click(function(e){
e.preventDefault();
var currentUrl = $(this).attr('href');
$.ajax({
type : 'post',
url : myAjax.ajaxUrl,
data: {
action: 'myAjaxHandler',
post_url: currentUrl
},
success: function(data){
$('#ajax_post').html(data);
}
});
});
把上面的代码放在jQuery(function($){...});
函数里面(jQuery 的 ready 事件)。完成了!现在您可以使用ajax
.
解释 :
当您单击带有类 name 的元素内的任何链接(假设是一个 div)时your_post-entry
,click 事件将触发(您知道)并且它会发送一个 post 请求到,http://yourDomain.com/wp-admin/admin-ajax.php
因为myAjax.ajaxUrl
包含它url
并且它(myAjax 对象)可供我们使用通过wp_localize_script
我们在functions.php
. 该ajax
请求还将向$_POST
数组发送一些变量,这些变量是action
and post_url
,post_url
包含permalink
帖子的,admin-ajax.php
并将运行我们的do_myAjaxFunction
,它将获取帖子的内容并将其发送回浏览器,因为我们使用 添加了操作add_action( 'wp_ajax_myAjaxHandler', 'do_myAjaxFunction' )
,这告诉WordPree
每当您收到 ajax 操作请求时myAjaxHandler
,请运行该功能do_myAjaxFunction
。首先add_action
is wp_ajax_nopriv_myAjaxHandler
,即使用户没有在 wordpress 后端登录,也需要使 ajax 请求工作,如果用户没有登录,则没有wp_ajax_nopriv_myAjaxHandler
ajax 请求将不起作用。注意回调$('#ajax_post').html(data);
中的行success
,它会插入element/div
使用of将数据返回到id
中ajax_post
,因此请确保在点击事件中使用适当的id
和名称。class
例如,如果您不想为每个帖子使用,那么您可以为那些您想使用 ajaxajax
的帖子添加/生成一个,例如,在点击事件中您可以使用class
post links
ajaxPost
$('.your_post-entry a.ajaxPost').click(function(e){ ... });
现在你知道怎么做,所以我认为你可以使用mouseenter
而不是click
如果你需要这样做(你给出了一个 mouseenter 的例子)。
一些有用的链接: wp_ajax_和how-to-use-ajax-in-wordpress