好吧,我一直在寻找几个小时和几个小时,似乎有很多方法可以做到这一点,因为我之前从未使用过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,这是循环所在的位置,应该由模板文件切换,只是消失了所有的帖子列表,我只留下了页面的上半部分(直到#sub_cat div曾经是)。
有如此多的试验和错误,我已尝试使用模板文件中的查询调用,在索引文件中,在函数中,我似乎永远不会得到任何结果。
在我的functions.php文件中我得到了这个:
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,但它无处可去,我真的需要指导。任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
这比它需要的更复杂。您根本不需要其他查询或AJAX。如果您的主题正在使用post_class()
功能,那么您的帖子都会包含与您的类别相关联的类。这些类是前缀为&#39;类别的类别名称 - &#39; - &#39; category-uncategorized&#39;,例如。您真正需要做的就是根据这些类显示和隐藏帖子。
我没有专门针对您的情况编写任何内容,但我已经使用一些非常大的搜索结果(有时每页400或更多)完成了这项工作,而且效果非常好。这是一个想法:使用jQuery来观看您的选择菜单。你想要change。当选择更改时,解析信息以计算类别(我不知道其标记中包含wp_dropdown_categories()
包含的信息。),show()
所选类别和{{3}其他一切。