2013-04-30 74 views
1

我的工作離TwentyTwelve主題,我已經通過了環無法獲得類別顯示

get_header(); ?> 

<div id="primary" class="site-content"> 
    <div id="content" role="main" class="clearfix"> 
     <?php 
      $terms = get_the_category(); 
      $count = count($terms); 
      echo '<ul id="post-filter">'; 
       echo '<li><a href="#all" title="">All</a></li>'; 
       if ($count > 0){ 

        foreach ($terms as $term) { 

         $termname = strtolower($term->name); 
         $termname = str_replace(' ', '-', $termname); 
         echo '<li><a href="#'.$termname.'" title="" rel="'.$termname.'">'.$term->name.'</a></li>'; 
        } 
      } 
      echo "</ul>"; 
     ?> 
     <div id="mwrapper"> 

    <?php query_posts('cat=-6,-7'); ?> 
    <?php if (have_posts()) : ?> 

     <?php /* Start the Loop */ ?> 
     <?php while (have_posts()) : the_post(); ?> 
      <div class="box">.... 

我試圖創建一個過濾器將過濾前加入這個片段修改索引文件通過博客文章。像演示here一樣。目前我有五個類別:機構註釋,設計筆記,精選,幽默,未分類。每個類別至少有一篇文章,但它似乎只是在設計筆記中。

我也試圖改變get_the_category();wp_list_categories();但最終顯示的所有類別。

Source我碰到的片段。

+0

首先,它是更好地使用'$條款而─> slug',而不是'用strtolower()'和'str_replace()函數'。 – doublesharp 2013-04-30 16:22:08

回答

2

get_the_category()抓住當前職位的類別/ IES信息,在充分WP安裝類別不在名單。

我想你要找的是什麼get_categories()功能(更多信息在這裏的聖典:http://codex.wordpress.org/Function_Reference/get_categories

<?php 
    $categories=get_categories(array('order' => 'ASC', 'orderby' => 'name')); 
    $count = count($terms); 
    [...] 
+0

也可能需要'query_posts()'之前,而不是之後它,因爲在OP的例子。 – doublesharp 2013-04-30 16:27:34

+0

工作。你太棒了,謝謝! – 2013-04-30 18:10:49

0

首先,你想要得到的所有類別。 get_the_category()不會這樣做。您可能需要get_categories()。

$terms = get_categories(); 
$count = count($terms); 
echo '<ul id="post-filter">'; 
    echo '<li><a href="#all" title="">All</a></li>'; 
    if ($count > 0) { 
    foreach ($terms as $term) { 
     echo '<li><a href="#" data-slug="'.$term->slug.'">'.$term->name.'</a></li>'; 
    } 
    } 
echo "</ul>"; 

我也做了一些修改:刪除了hash和rel屬性。我們可以使用更具語義的數據屬性。

下一部分取決於你的後置HTML,但我假設他們有一類post和類別他們是如果他們這樣做,你可以做這樣的事情用jQuery:

$('a', '#post-filter').on('click', function(e) { 
    e.preventDefault(); 

    $('.post').hide().filter('.' + $(this).attr('data-slug')).show(); 
}); 

這將隱藏所有帖子,並只顯示所選類別的人。我會把它留給你來整理動畫。