我正在尝试在WordPress页面中发生以下情况:
在初始页面上有一个
标签,我想将数据加载到:
<p id="sortFilter"></p>
这是我正在使用的代码,它似乎没有工作(没有任何内容被加载到#sortFilter p)
$(document).ready(function() {
setInterval(function(){
$("#sortFilter").load("http://<?php echo $_SERVER[HTTP_HOST]; ?>/sort-filter/");
},1000);
//Filter Categories
$.ajaxSetup({cache:true});
$('#byAuthorCtrl ul li').click( function() {
$.post("http://<?php echo $_SERVER[HTTP_HOST]; ?>/sort-filter/", {id: "testValue"}
);
});
});
然后在sortFilter.php上:
<?php
/*
Template Name: sortFilter
*/
$id = $_POST['id'];
echo $id;
?>
现在我只是使用测试值来尝试发布到页面。
答案 0 :(得分:1)
WordPress内置了AJAX功能。使用带参数'action'的POST将您的ajax请求发送到/wp-admin/admin-ajax.php:
jQuery(document).ready(function(){
jQuery.ajax({
type:'POST',
data:{
action:'my_unique_action',
id:'testValue'
},
url: "http://mysite/wp-admin/admin-ajax.php",
success: function(value) {
jQuery(this).html(value);
}
});
});
然后将它挂在插件中,如果您只希望它对登录用户有效:
add_action('wp_ajax_my_unique_action','doMyCustomAjax');
或将其挂钩,仅适用于未登录的用户:
add_action('wp_ajax_nopriv_my_unique_action','doMyCustomAjax');
如果您希望它适用于所有人,请同时使用它们。
这是doAjax函数,例如:
function doMyCustomAjax(){
$id = ( isset( $_POST['id'] ) ) ? $_POST['id'] : '';
if( empty( $id ) )
return;
echo $id;
}
也把它放在functions.php中。这将返回您在AJAX中发送的ID。
admin-ajax.php已经使用了一些动作名称,因此请确保查看该文件并且不要使用相同的动作名称,否则您将不小心尝试删除注释等等。
修改
将add_action
行放在functions.php文件中。 admin-ajax.php文件将运行一些函数,然后运行你的'action'值生成的钩子,然后杀死脚本。我修改了上面的代码以反映这些信息。
答案 1 :(得分:1)
好的...抱歉使用“答案”添加评论,但在此处详细说明代码显示会更容易。
所以,我在我的functions.php中有以下内容:
add_action('wp_ajax_my_unique_action','doMyCustomAjax');
function doMyCustomAjax(){
$id = ( isset( $_POST['id'] ) ) ? $_POST['id'] : '';
if( empty( $id ) )
return;
echo $id;
}
footer.php中的以下脚本将在我的类别档案中执行:
<script type="text/javascript">
$(document).ready(function() {
//Filter Categories
$.ajaxSetup({cache:true});
$('#byAuthorCtrl ul li').click( function() {
jQuery.ajax({
type:'POST',
data:{id:'my_unique_action'},
url: "http://www.theknotcollective.com/wp-admin/admin-ajax.php",
success: function(value) {
jQuery(this).html(value);
}
});
});
});
</script>
以及我的category.php顶部的以下内容:
<p id="sortFilter"><?php doMyCustomAjax(); ?></p>
再一次,我的目标是在点击链接后发布“id”变量,然后在重新加载页面后检索它,以便在页面刷新时结束不同的循环。
我是ajax和这种类型的PHP函数的新手,所以我不太明白这里发生了什么,显然我错过了什么/做错了什么。如果你能详细说明一下,我真的很感激它!
THX!