نمایش تمام دسته ها و پست ها بصورت سلسله مراتبی در وردپرس

این کد رو نوشتم برای نمایش سلسله مراتبی تمام دسته ها و پست های وبلاگم، که در لینک بالای صفحه تحت عنوان «فهرست تمام نوشته ها» هم میتونید نتیجش رو ببینید.

function list_cat_posts($cat_id) {
$posts=get_posts(array('numberposts' => -1, 'category'=>$cat_id));
echo '<ul>';
foreach($posts as $post) {
if(!in_category($cat_id, $post->ID)) continue;
echo '<li>';
echo '<a target="_blank" href="', get_permalink($post->ID), '">';
echo $post->post_title;
echo '</a>';
}
echo '</ul>';
}

function traverse_cats($cat=null) {
if(is_null($cat)) {
$cats=get_categories(array('parent'=>0));
echo '<ul>';
foreach($cats as $cat) traverse_cats($cat);
echo '</ul>';
return;
}
echo '<li>';
echo $cat->name;
echo '&rlm; (', count(get_posts(array('numberposts' => -1, 'category'=>$cat->cat_ID))), ')';
if(count($cats=get_categories(array('parent'=>$cat->cat_ID)))) {
echo '<ul>';
foreach($cats as $tmp) traverse_cats($tmp);
echo '</ul>';
list_cat_posts($cat->cat_ID);
}
else list_cat_posts($cat->cat_ID);
}

echo '<h1 class="entry-title" align="center">&#1601;&#1607;&#1585;&#1587;&#1578; &#1578;&#1605;&#1575;&#1605; &#1606;&#1608;&#1588;&#1578;&#1607; &#1607;&#1575;';
echo '<span style="font-size: smaller"> (', count(get_posts(array('numberposts' => -1))), ')</span>';
echo '</h1>';
echo '<center><table><tr><td>';

traverse_cats();

echo '</td></tr></table></center>';

سعی کردم کد کاملی باشه که با هر ساختار و دسته بندی بخوبی کار بکنه. یعنی مثلا اگر مثل من دسته های تودرتو داشتید باشید، تا هر تعداد و سطحی که باشه.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>