2014-09-11 65 views
0

我想知道:有沒有什麼辦法可以加載所有類別,並將每個類別存儲在不同的數組中?WordPress的:獲取和存儲類別信息

所以我得到這個代碼:

<?php 
$cat_args = array('orderby' => 'name','order' => 'ASC'); 

$categories = get_categories($cat_args); 

foreach($categories as $category) { 
    $args = array(
     'showposts'  => -1, 
     'category__in'  => array($category->term_id), 
     'caller_get_posts' => 1 
    ); 

    $posts = get_posts($args); 

    if ($posts) { 
     echo '<p>Category: <a href="' . get_category_link($category->term_id) . '" title="' . sprintf(__("View all posts in %s"), $category->name) . '" ' . '>' . $category->name.'</a> </p> '; 

     foreach($posts as $post) { 
      setup_postdata($post); 
      ?> <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> <?php 
     } // foreach($posts 
    } // if ($posts 
} // foreach($categories 
?> 

我想讓它,這樣我可以在以後類似的(外循環),使用它:

<?php echo $category[0] -> name . $category[1] -> name . $category[2] -> name; ?> 
+0

請注意:'caller_get_posts'和'showposts'已在幾年前貶值。它們分別由'ignore_sticky_posts'和'posts_per_page'取代 – 2014-09-12 08:07:20

回答

1

如果你只需要類別名稱的數組,你可以改變你的代碼如下: (請注意:caller_get_postsshowposts已經貶值幾年前,他們在由ignore_sticky_postsposts_per_page分別更換。)

<?php 
$cat_args = array('orderby' => 'name','order' => 'ASC'); 

$categories = get_categories($cat_args); 

$category_names = array(); 
foreach($categories as $category) { 
    $category_names[] = $category->name; 
    $args = array(
     'posts_per_page'  => -1, 
     'category__in'  => array($category->term_id), 
     'ignore_sticky_posts' => 1 
    ); 

    $posts = get_posts($args); 

    if ($posts) { 
     echo '<p>Category: <a href="' . get_category_link($category->term_id) . '" title="' . sprintf(__("View all posts in %s"), $category->name) . '" ' . '>' . $category->name.'</a> </p> '; 

     foreach($posts as $post) { 
      setup_postdata($post); 
      ?> <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> <?php 
     } // foreach($posts 
    } // if ($posts 
} // foreach($categories 
?> 

$category_names現在將舉行類別名稱的數組。

如果您需要顯示低於他們的帖子的類別列表,您應該查看my post here on WPSE。你的方法非常耗費資源,而且速度很慢。我的方法是超快速,使用瞬態,並在最佳情況下,在0.002秒內只有2分貝查詢

0

注意:您已經以$ categories變量的格式存儲數據。 所以,你可以在任何地方使用這樣

<?php echo $categories[0] -> name . $categories[1] -> name . $categories[2] -> name; ?>