2012-05-07 36 views
3

那麼,我一直在尋找無處不在的小時和幾個小時,似乎有很多方法可以做到這一點,因爲我以前從未使用Ajax,並且對havascript,對我來說太難了。在Wordpress中使用Ajax過濾循環的類別

我在我的首頁(索引)或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曾經是)。

有太多的試驗和錯誤,我試着用模板文件中的查詢調用,在索引文件中,在函數中,我從來沒有得到任何結果。

我functions.php文件Ive得到了這一點:

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

我也會喜歡這個答案。幫助將不勝感激。 – beefchimi

回答

0

這比它需要更復雜。你根本不需要額外的查詢或AJAX。如果您的主題使用post_class()函數,那麼您的帖子都會有與您的類別相關聯的類。例如,這些類是以'category-' - 'category-uncategorized'作爲前綴的類別名稱。你真正需要做的就是根據這些類來顯示和隱藏帖子。

我沒有爲您的情況特別寫任何東西,但是我已經用一些非常大的搜索結果完成了這項工作 - 有時每個頁面有400或更多 - 並且工作得很好。這裏有個想法:使用jQuery來觀看你的選擇菜單。你想要change。當選擇更改時,解析信息以制定出類別(我不知道wp_dropdown_categories()在其標記中包含哪些信息。),show()所選類別和hide()其他所有內容。