درس بناء صفحة أرشيف المقالات (archive.php) في ووردبريس
1. مقدمة عن صفحة الأرشيف في ووردبريس
لما تدخل على موقع ووردبريس وتضغط على تصنيف (Category) أو المؤلف (Author) أو حتى الوسم (Tag)، هتدخل على صفحة بتعرض كل المقالات المتعلقة بالتصنيف أو الكاتب ده. الصفحة دي اسمها صفحة الأرشيف (Archive Page).
الصفحة دي مش موجودة في القالب بشكل مباشر، بس ووردبريس بيستخدم ملف archive.php
أو ملفات أرشيف خاصة زي category.php
أو author.php
لو موجودة، عشان يعرض المحتوى.
2. فهم مفهوم صفحة الأرشيف وأهميتها
صفحة الأرشيف بتجمع مجموعة من المقالات المرتبطة بعنوان أو موضوع معين زي:
- كل المقالات في تصنيف “تسويق”
- كل المقالات اللي كتبها “محمد ابوزيد”
- كل المقالات اللي ليها وسم “ووردبريس”
وظيفتها تسهيل تصفح الموقع وتنظيم المحتوى، وبتأثر على تجربة الزوار وترتيب الموقع في محركات البحث.
3. إنشاء ملف archive.php في قالب ووردبريس
لو مفيش ملف archive.php
موجود في القالب بتاعك، ممكن تنشئ ملف جديد بالاسم ده في فولدر القالب.
ملف archive.php
هو القالب العام لكل صفحات الأرشيف لو مفيش ملفات متخصصة أكتر.
هيكل ملف archive.php الأساسي
<?php get_header(); ?>
<div class="archive-content">
<?php if (have_posts()) : ?>
<h1 class="archive-title">
<?php
if (is_category()) {
single_cat_title();
} elseif (is_author()) {
the_post();
echo 'مقالات الكاتب: ' . get_the_author();
rewind_posts();
} elseif (is_tag()) {
single_tag_title();
} else {
echo 'أرشيف المقالات';
}
?>
</h1>
<?php
while (have_posts()) : the_post();
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="post-meta">
نُشر في: <?php the_date(); ?> | الكاتب: <?php the_author(); ?>
</div>
<div class="post-excerpt">
<?php the_excerpt(); ?>
</div>
</article>
<?php endwhile; ?>
<div class="pagination">
<?php
the_posts_pagination(array(
'mid_size' => 2,
'prev_text' => __('« السابق'),
'next_text' => __('التالي »'),
));
?>
</div>
<?php else : ?>
<p>لا توجد مقالات في هذا الأرشيف.</p>
<?php endif; ?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
4. طريقة عرض المقالات حسب التصنيف (Category Archives)
ووردبريس بيوفر لك دالة is_category()
للتحقق إذا كانت صفحة الأرشيف هي صفحة تصنيف، وبعدين تقدر تعرض عنوان التصنيف مثلاً باستخدام single_cat_title()
.
لو عايز تخصص شكل عرض المقالات في صفحة التصنيف، تقدر تعمل ملف باسم category.php
في القالب، وهوه هيتم استخدامه بدل archive.php
في صفحات التصنيفات.
مثال ملف category.php مخصص
<?php get_header(); ?>
<h1>التصنيف: <?php single_cat_title(); ?></h1>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<article>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div>تاريخ النشر: <?php the_date(); ?></div>
<div><?php the_excerpt(); ?></div>
</article>
<?php endwhile; else: ?>
<p>لا توجد مقالات في هذا التصنيف.</p>
<?php endif; ?>
<?php get_footer(); ?>
5. طريقة عرض المقالات حسب الكاتب (Author Archives)
بالنسبة لصفحة الكاتب، تقدر تستخدم is_author()
عشان تتأكد، وبعدين تعرض بيانات الكاتب باستخدام دوال زي get_the_author()
و the_author_meta()
.
مثال ملف author.php مخصص
<?php get_header(); ?>
<?php
if (have_posts()) {
the_post();
?>
<h1>مقالات الكاتب: <?php the_author(); ?></h1>
<div class="author-bio">
<?php echo get_the_author_meta('description'); ?>
</div>
<?php
rewind_posts();
while (have_posts()) : the_post();
?>
<article>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div>نُشر في: <?php the_date(); ?></div>
<div><?php the_excerpt(); ?></div>
</article>
<?php
endwhile;
} else {
echo '<p>لا توجد مقالات لهذا الكاتب.</p>';
}
?>
<?php get_footer(); ?>
6. أكواد عملية لعرض أرشيف المقالات
6.1. إضافة صورة مميزة مع المقال في صفحة الأرشيف
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php if (has_post_thumbnail()) : ?>
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail('thumbnail'); ?>
</a>
<?php endif; ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="post-meta">
بتاريخ: <?php the_date(); ?> | الكاتب: <?php the_author(); ?>
</div>
<div><?php the_excerpt(); ?></div>
</article>
6.2. عرض تصنيفات المقالة تحت العنوان
<div class="post-categories">
<?php the_category(', '); ?>
</div>
6.3. استخدام Pagination بشكل متقدم
the_posts_pagination(array(
'mid_size' => 2,
'prev_text' => __('« السابق'),
'next_text' => __('التالي »'),
'screen_reader_text' => ' '
));
7. تخصيص شكل الأرشيف حسب نوع الأرشيف
ممكن تستخدم شرطيات لتغيير العنوان أو المحتوى:
<?php if (is_category()) : ?>
<h1>تصنيف: <?php single_cat_title(); ?></h1>
<?php elseif (is_tag()) : ?>
<h1>وسم: <?php single_tag_title(); ?></h1>
<?php elseif (is_author()) : ?>
<?php the_post(); ?>
<h1>مقالات الكاتب: <?php the_author(); ?></h1>
<?php rewind_posts(); ?>
<?php else : ?>
<h1>أرشيف الموقع</h1>
<?php endif; ?>
8. التعامل مع التمرير والصفحات المتعددة (Pagination)
لو في مقالات كتير في الأرشيف، لازم تظهر صفحات إضافية عشان تقدر تتصفح باقي المقالات.
استخدام دالة the_posts_pagination()
بيخلي التنقل بين صفحات الأرشيف سهل وأنيق.
9. نصائح مهمة لتحسين صفحة الأرشيف
- خليك دايمًا تستخدم
have_posts()
وthe_post()
عشان تضمن عرض المقالات بشكل صحيح - استعمل
rewind_posts()
لو عايز تستخدم دوال المؤلف بعد استدعاءthe_post()
مرة - أضف صور مصغرة عشان الأرشيف يكون جذاب وسهل التصفح
- اهتم بالتصميم بحيث تكون العناوين واضحة والنصوص مختصرة
- دايمًا اختبر صفحة الأرشيف على أكثر من جهاز
10. مراجعة سريعة
- صفحة الأرشيف بتعرض مقالات بتصنيف أو كاتب معين أو وسم
- الملف الرئيسي لصفحة الأرشيف هو
archive.php
- ممكن تخصص صفحات أرشيف لكل نوع أرشيف بملفات زي
category.php
وauthor.php
- استخدام دوال ووردبريس المشهورة لعرض العناوين، التواريخ، المؤلف، والمحتوى
- إضافة Pagination مهم جدًا لو في مقالات كتير
- صور المقالات بتخلي الأرشيف أجمل وأسهل للزوار
11. أسئلة شائعة
س: هل لازم أعمل ملف archive.php؟
ج: مش لازم، لكن وجوده بيخلي القالب يعرض صفحات الأرشيف بشكل متناسق.
س: هل يمكنني عرض المقالات بشكل مختلف في كل تصنيف؟
ج: أيوه، بتعمل ملفات category-{slug}.php
أو category-{id}.php
للتخصيص.
س: إزاي أضيف صورة المقال في صفحة الأرشيف؟
ج: تستخدم دالة has_post_thumbnail()
و the_post_thumbnail()
داخل اللوب.
س: هل Pagination ضروري؟
ج: ضروري لو المقالات كتيرة عشان تسهل التنقل.