تعداد پستهای وبلاگم خیلی زیاد شده بود گفتم خوبه یه صفحه بذارم که توش تمام پستها رو لیست کنم که قابل بررسی و پیگیری کلی و منظم و راحت باشه.
لیست هم بصورت سلسله مراتبی باشه که بر اساس Category ها شکل گرفته.
دیشب این کد رو برای این کار نوشتم:
$posts=get_posts(array('numberposts' = > -1, 'category'= >$cat_id));
if(empty($posts)) return;
echo '
<ul>';
foreach($posts as $post) {
if(!in_category($cat_id, $post- >ID)) continue;
echo '
<li>';
echo '<a>ID), '" >';
echo $post- >post_title;
echo '</a>';
}
echo '</li>
</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 '< span style="visibility: hidden" >ه< /span >(', count(get_posts(array('numberposts' = > -1, 'category'= >$cat- >cat_ID))), ')';
if(count($cats=get_categories(array('parent'= >$cat- >cat_ID)))) {
$n=count($cats);
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" >فهرست تمام نوشته ها';
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 >';
traverse_cats یک تابع بازگشتی است.
خواستم ببینم شاید کسی راه سرراست تری سراغ داشته باشه.
لیست توابع وردپرس رو نگاه کردم اما تابع سرراستی برای این کار نداشت ظاهرا، بخاطر همین خودم دست به کار شدم.