2014-09-11 60 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; ?>