好吧,我已经到处寻找了几个小时,似乎有很多方法可以做到这一点,因为我以前从未使用过 Ajax,而且对 havascript 知之甚少,这对我来说太难了。
我在首页(索引)或wordpress上有循环,我想要一个过滤器,一个具有不同类别的下拉菜单,单击时,同一屏幕中显示的唯一帖子是该类别的帖子。我需要用 ajax 刷新循环,所以在使用过滤器时整个页面仍然保持不变。
这是我的索引文件:
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1.2.6")</script>
<script type="text/javascript">
$(function(){
$('#main_cat').change(function(){
var $mainCat=$('#main_cat').val();
$("#sub_cat").empty();
// call ajax
$.ajax({
url:"<?php bloginfo('wpurl'); ?>/wp-admin/admin-ajax.php",
type:'POST',
data:'action=my_special_ajax_call&main_catid=' + $mainCat,
success:function(results)
{
// alert(results);
$('#sub_cat *').fadeOut(500);
$('#sub_cat + p').fadeOut(500);
$("#sub_cat").append(results);
$('#sub_cat').load('http://localhost:8888/public_html/wp-content/themes/twentyten-child/templateloop.php');
$('#sub_cat + p').fadeIn(1);
}
});
}
);
});
包含类别的下拉列表如下所示:
<?php
wp_dropdown_categories('show_count=0&selected=-1&hierarchical=1&depth=1&hide_empty=0&exclude=1&show_option_none=Main Categories&name=main_cat');
?>
因此,下拉列表有效,它应该 ajax 加载一个 wp 模板文件,其中包含仅过滤一个类别(从wp_dropdown_categories中抓取)的查询。如果我在 templateloop.php 文件中有一个虚拟文本,加载工作正常,但是当我有 wp 查询时,没有任何反应。#sub_cat div,这是循环所在的位置,应该由模板文件切换,只是随着所有帖子列表而消失,IM 只剩下页面的上半部分(直到 #sub_cat div 曾经的位置)。
有太多的尝试和错误,我在模板文件、索引文件和函数中尝试了查询调用,但似乎从未得到任何结果。
function implement_ajax() {
if(isset($_POST['main_catid']))
{
echo '<?php $paged = (get_query_var("paged")) ? get_query_var("paged") : 1; query_posts("cat='.$_GET['maincatid'].'&paged=$paged"); ?>';
die();
} // end if
}
add_action('wp_ajax_my_special_ajax_call', 'implement_ajax');
add_action('wp_ajax_nopriv_my_special_ajax_call', 'implement_ajax');//for users that are not logged in.
在这之前,我在索引文件中使用的查询行是:
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("cat=1,2,3,4,5&paged=$paged"); ?>
我尝试使用wp_query但它无处可去,我真的需要指导。任何帮助,不胜感激。谢谢。
这比它需要的更复杂。你根本不需要额外的查询或AJAX。如果你的主题是使用post_class()
函数,那么你的帖子都有与你的类别相关的类。例如,这些类是以“category-”--“category uncategorized”开头的类别名称。你真正需要做的就是显示和隐藏基于这些类的帖子。
我没有专门针对您的情况写任何东西,但我已经用一些非常大的搜索结果做到了这一点——有时每页400个或更多——而且效果很好。这个想法是:使用jQuery来查看您的选择菜单。你想要改变。当选择更改时,解析信息以确定类别(我不知道wp_dropdown_categories()
在其标记中包含什么信息。)show()
所选类别,hide()
其他所有内容。