have_posts()
- توقيع:
have_posts() - ترجع:
bool— هل هناك منشورات متبقية في الـWP Query الحالية؟ - متى نستخدمها: لبدء حلقة العرض القياسية:
while ( have_posts() ) { the_post(); ... }. - ملاحظات: لا تطبع شيء، فقط تفحص الحالة.
مثال
<?php
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
<?php endwhile; endif; ?>
PHPthe_post()
- توقيع:
the_post() - ترجع: لا شيء (تعمل تغييرات على
$postالعام). - وظيفة: تجهّز بيانات المنشور الحالي للاستخدام (setup_postdata).
- متى: داخل كل تكرار من
while ( have_posts() ).
مثال
<?php while ( have_posts() ) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php the_title('<h1>','</h1>'); ?>
</article>
<?php endwhile; ?>
PHPget_header( $name = null )
- توقيع:
get_header( $name = null ) - وظيفة: يضم ملف
header.phpأوheader-$name.php. - متى: عادة في أعلى ملف القالب.
- ملاحظة: لا تطبع رأس HTML قبل استدعاء دوال تعتمد على الهيدر إن لزم.
مثال
<?php
get_header(); // أو get_header('home') لتحميل header-home.php
?>
PHPget_footer( $name = null )
- توقيع:
get_footer( $name = null ) - وظيفة: يضم footer.php أو footer-$name.php في نهاية القالب.
مثال
<?php
// نهاية single.php
get_footer();
?>
PHPدوال بيانات المنشور (IDs, Title, Permalink, Date)
get_the_ID()
- توقيع:
get_the_ID() - ترجع:
int— معرف المنشور الحالي داخل الـLoop. - متى: عندما تحتاج الـID كقيمة (مثلاً لجلب metadata).
مثال
<?php $id = get_the_ID(); ?>
<p>Post ID: <?php echo intval( $id ); ?></p>PHPthe_ID()
- توقيع:
the_ID() - وظيفة: تطبع معرف المنشور مباشرة (echo).
- ملاحظة: لا تستخدم
echo the_ID();.
مثال
<p>ID: <?php the_ID(); ?></p>
PHPget_the_title( $post = 0 )
- توقيع:
get_the_title( $post = 0 ) - ترجع:
string— عنوان المنشور (لا يطبع). - متى: عندما تريد تعديل/تعقيم العنوان قبل الطباعة.
مثال
<?php
$title = get_the_title();
echo '<h1>' . esc_html( $title ) . '</h1>';
?>PHPthe_title( $before = '', $after = '', $echo = true )
- توقيع:
the_title( $before = '', $after = '', $echo = true ) - وظيفة: تُخرِج العنوان مباشرة؛ يمكن تمرير $before/$after. إذا مررت
$echo = falseفستُعيد العنوان بدل الطباعة. - متى: للاخراج السريع داخل القالب.
مثال
<?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>PHPget_permalink( $post = 0 )
- توقيع:
get_permalink( $post = 0 ) - ترجع:
string— رابط ثابت للمنشور. - متى: عند بناء روابط (وشير على شبكات اجتماعية، أو روابط مخصصة).
مثال
<a href="<?php echo esc_url( get_permalink() ); ?>">اقرأ المزيد</a>
PHPthe_permalink()
- توقيع:
the_permalink() - وظيفة: تطبع الرابط الثابت مباشرة (بديل لـ
echo get_permalink()).
مثال
<a href="<?php the_permalink(); ?>">رابط المقال</a>PHPget_the_date( $format = '', $post = null )
- توقيع:
get_the_date( $format = '', $post = null ) - ترجع:
string— تاريخ المنشور بحسب التنسيق. - متى: لعرض التاريخ كسلسلة قابلة للتعديل.
مثال
<p>نشر بتاريخ: <?php echo esc_html( get_the_date( 'j F, Y' ) ); ?></p>
the_time( $format = '' ) / get_the_time()
- توقيع:
the_time( $format = '' )/get_the_time( $format = '' ) - وظيفة: تطبع/ترجع وقت نشر المنشور (ساعة/دقيقة) حسب التنسيق.
مثال
<p>الوقت: <?php the_time( 'H:i' ); ?></p>
التصنيفات والوسوم (Taxonomies)
get_the_terms( $post_id, $taxonomy )
- توقيع:
get_the_terms( $post_id, $taxonomy ) - ترجع:
array(WP_Term)أوfalseأوWP_Error. - متى: عندما تريد تحكمًا كاملاً في النتائج (الاسم، الرابط، الوصف…).
- مهم: افحص
if ( $terms && ! is_wp_error( $terms ) )قبل الضبط.
مثال
<?php
$cats = get_the_terms( get_the_ID(), 'category' );
if ( $cats && ! is_wp_error( $cats ) ) {
foreach ( $cats as $cat ) {
echo '<a href="' . esc_url( get_term_link( $cat ) ) . '">' . esc_html( $cat->name ) . '</a> ';
}
}
?>
get_term_link( $term, $taxonomy = '' )
- توقيع:
get_term_link( $term, $taxonomy = '' ) - ترجع:
string(URL) أوWP_Error. - متى: لتحويل
WP_Termأو معرف الترم إلى رابط أرشيف التصنيف.
مثال
<?php
$term_link = get_term_link( $cat );
if ( ! is_wp_error( $term_link ) ) {
echo esc_url( $term_link );
}
?>
the_category( $separator = ', ' )
- توقيع:
the_category( $separator = ', ' ) - وظيفة: تطبع روابط التصنيفات للفست المناظرة. أسهل للاستخدام السريع.
مثال
<p>التصنيفات: <?php the_category( ' • ' ); ?></p>
the_tags( $before = '', $sep = ', ', $after = '' )
- توقيع:
the_tags( $before = '', $sep = ', ', $after = '' ) - وظيفة: تطبع وسوم المنشور كرابط.
مثال
<?php the_tags( '<p>Tags: ', ' | ', '</p>' ); ?>
الصور والمرفقات (Media & Attachments)
has_post_thumbnail( $post = null )
- توقيع:
has_post_thumbnail( $post = null ) - ترجع:
bool— هل للمقال صورة مميزة؟ - متى: فحص قبل عرضها لتجنّب فراغات HTML.
مثال
<?php if ( has_post_thumbnail() ) : the_post_thumbnail( 'large' ); endif; ?>
the_post_thumbnail( $size = 'post-thumbnail', $attr = '' )
- توقيع:
the_post_thumbnail( $size = 'post-thumbnail', $attr = '' ) - وظيفة: تطبع وسم
<img>للصورة المميزة؛ يقبل سمات كمصفوفة أو string.
مثال
<?php the_post_thumbnail( 'medium', array( 'loading' => 'lazy', 'alt' => esc_attr( get_the_title() ) ) ); ?>
get_the_post_thumbnail( $post = null, $size = 'post-thumbnail', $attr = '' )
- توقيع:
get_the_post_thumbnail( $post = null, $size = 'post-thumbnail', $attr = '' ) - ترجع: HTML
<img>كسلسلة — مفيد إذا تريد تعديل العلامة أو حفظها في متغير.
مثال
<?php
$img_html = get_the_post_thumbnail( get_the_ID(), 'large' );
echo $img_html; // أو تعديل قبل الطباعة
?>
wp_get_attachment_image( $attachment_id, $size = 'thumbnail', $icon = false, $attr = '' )
- توقيع:
wp_get_attachment_image( $attachment_id, $size, $icon, $attr ) - وظيفة: يعرض HTML صورة من مرفقات المكتبة (attachment ID). مفيد لعرض مرفقات مخصّصة.
مثال
<?php
$attachment_id = 123;
echo wp_get_attachment_image( $attachment_id, 'medium', false, array( 'alt' => 'وصف الصورة' ) );
?>
get_children( $args = array() )
- توقيع:
get_children( $args ) - ترجع: مصفوفة عناصر attachment (WP_Post) — تُستخدم لجلب مرفقات لعمل جاليري.
مثال
<?php
$images = get_children( array(
'post_parent' => get_the_ID(),
'post_type' => 'attachment',
'post_mime_type' => 'image',
'orderby' => 'menu_order',
) );
foreach ( $images as $img ) {
echo wp_get_attachment_image( $img->ID, 'thumbnail' );
}
?>
المؤلف (Author)
get_the_author_meta( $field = '', $user_id = false )
- توقيع:
get_the_author_meta( $field = '', $user_id = false ) - ترجع: قيمة الحقل المطلوب (display_name, user_email, description,…).
- متى: لعرض بيانات الكاتب كقيمة قابلة للتعقيم.
مثال
<?php
$author_name = get_the_author_meta( 'display_name' );
echo '<p>بقلم: ' . esc_html( $author_name ) . '</p>';
?>
the_author_posts_link()
- توقيع:
the_author_posts_link() - وظيفة: تطبع رابطًا لصفحة أرشيف مؤلفات الكاتب باسم الكاتب (للمستخدمين داخل الـLoop).
مثال
<p>Author: <?php the_author_posts_link(); ?></p>
get_author_posts_url( $author_id )
- توقيع:
get_author_posts_url( $author_id ) - ترجع: رابط أرشيف الكاتب.
مثال
<?php
$author_id = get_the_author_meta( 'ID' );
echo '<a href="' . esc_url( get_author_posts_url( $author_id ) ) . '">' . esc_html( get_the_author() ) . '</a>';
?>
المحتوى والـexcerpt
the_content( $more_link_text = null, $strip_teaser = false )
- توقيع:
the_content( $more_link_text = null, $strip_teaser = false ) - وظيفة: تطبع محتوى البوست بعد تطبيق فلتر
the_content(shortcodes، oEmbed، autop…). - متى: في صفحة single عادةً تُستخدم raw
the_content()لعرض المحتوى الكامل.
مثال
<main class="entry-content">
<?php the_content(); ?>
</main>
get_the_content( $more_link = false ) + apply_filters( 'the_content', $content )
- توقيع:
get_the_content() - ترجع: المحتوى الخام؛ إذا أردت نفس معالجة
the_contentفاستعمل:$content = apply_filters( 'the_content', get_the_content() ); echo $content; - متى: عندما تريد معالجة/التعديل قبل إخراج المحتوى.
مثال
<?php
$content = apply_filters( 'the_content', get_the_content() );
echo $content; // الآن مرر عبر فلترات the_content
?>
the_excerpt() / get_the_excerpt()
- الغرض: طباعة/إرجاع الملخص (excerpt). مفيد في الأرشيفات أو قوائم المقالات.
مثال
<?php if ( has_excerpt() ) {
the_excerpt();
} else {
echo wp_trim_words( get_the_content(), 40 );
} ?>
روابط التنقل (Adjacent / Pagination)
get_previous_post() / get_next_post()
- توقيع:
get_previous_post( $in_same_term = false, $excluded_terms = '', $taxonomy = 'category' ) - ترجع:
WP_Postأوnull. - متى: عندما تريد روابط سابِق/التالي ككائن لتتحكم بالعرض.
مثال
<?php
$prev = get_previous_post();
if ( $prev ) {
echo '<a href="' . esc_url( get_permalink( $prev ) ) . '">' . esc_html( get_the_title( $prev ) ) . '</a>';
}
?>
previous_post_link() / next_post_link()
- توقيع مختصر:
previous_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy ) - وظيفة: تطبع مباشرة روابط التنقل؛ أسهل للاستخدام السريع.
مثال
<div class="nav-links">
<div class="nav-previous"><?php previous_post_link( '%link', '« %title' ); ?></div>
<div class="nav-next"><?php next_post_link( '%link', '%title »' ); ?></div>
</div>
get_adjacent_post( $in_same_term = false, $excluded_terms = '', $previous = true )
- استخدام: دالة مرنة للحصول على منشور متجاور (سابق أو التالي) مع تحكم بالتاكسونومي.
مثال
<?php
$adj = get_adjacent_post( true, '', false ); // التالي بنفس التصنيف
if ( $adj ) {
echo get_the_title( $adj );
}
?>
paginate_links() / posts_nav_link()
- الاستخدام: للتنقل في صفحات الأرشيف أو نتائج البحث؛ أقل استخدامًا في صفحة single، لكن مهم للأرشيفات.
مثال مختصر (أرشيف):
<?php
global $wp_query;
echo paginate_links( array(
'total' => $wp_query->max_num_pages,
) );
?>
التعليقات (Comments)
comments_template( $file = '/comments.php', $separate_comments = false )
- وظيفة: يحمّل قالب التعليقات (comments.php) ويعرض نموذج وقائمة التعليقات.
- متى: في نهاية
single.phpلعرض قسم التعليقات.
مثال
<?php
if ( comments_open() || get_comments_number() ) {
comments_template();
}
?>
get_comments_number( $post_id = 0 )
- ترجع: عدد التعليقات (int) — يمكن استخدامه لعرض رقم التعليقات.
مثال
<p>التعليقات: <?php echo intval( get_comments_number() ); ?></p>
comments_popup_link( $no_comments, $one_comment, $multiple_comments, $css_class, $none )
- وظيفة: تطبع رابطًا لقسم التعليقات مع نص معتمد على العدد (مفيد في القوائم).
مثال
<?php comments_popup_link( 'لا توجد تعليقات', 'تعليق واحد', '% تعليقات' ); ?>
sidebar, widgets و post class
dynamic_sidebar( $index )
- وظيفة: يعرض الودجتس المسجلة للـsidebar المحدد.
- متى: في الـsidebar أو منطقة جانبية في القالب.
مثال
<aside class="sidebar">
<?php if ( is_active_sidebar( 'single-post-sidebar' ) ) {
dynamic_sidebar( 'single-post-sidebar' );
} ?>
</aside>PHPpost_class( $class = '', $post_id = null )
- وظيفة: تطبع قائمة CSS classes للعنصر
<article>بناءً على نوع المنشور، حالة النشر، تصنيفات، الخ. مفيدة للـstyling. - متى: داخل وسم المقال.
مثال
<article id="post-<?php the_ID(); ?>" <?php post_class( 'my-custom-class' ); ?>>
...
</article>PHPالـ Metadata وحقول مخصصة
get_post_meta( $post_id, $key = '', $single = false )
- ترجع: قيمة الحقل المخصص أو مصفوفة منه.
- متى: عندما تستخدم Advanced Custom Fields أو custom fields.
مثال
<?php
$price = get_post_meta( get_the_ID(), 'product_price', true );
if ( $price ) {
echo '<p>السعر: ' . esc_html( $price ) . ' USD</p>';
}
?>PHPedit_post_link( $link = null, $before = '', $after = '' )
- وظيفة: يطبع رابط “تحرير” يظهر فقط للمستخدمين المصرح لهم. مفيد في القوالب لتسهيل التعديل.
مثال
<?php edit_post_link( 'تعديل المقال', '<p>', '</p>' ); ?>PHPدوال مساعدة/أمان (هامة للاستخدام السليم)
is_wp_error( $thing )
- وظيفة: يتحقق إن كان الشيء من نوع
WP_Error. استخدمه عند التعامل مع دوال قد ترجع WP_Error (مثلget_term_link()).
مثال
<?php
$link = get_term_link( $term );
if ( is_wp_error( $link ) ) {
// التعامل مع الخطأ
} else {
echo esc_url( $link );
}
?>
PHPالتعقيم: esc_html(), esc_url(), esc_attr()
- مهم جدًا: لا تطبع بيانات خارجية (عناوين، روابط، أسماء تصنيفات، نصوص المستخدمين) دون تعقيم.
esc_html( $text )للطباعة داخل HTML.esc_attr( $value )لقيم السمات (attribute values).esc_url( $url )للروابط.
مثال
<a href="<?php echo esc_url( get_permalink() ); ?>" title="<?php echo esc_attr( get_the_title() ); ?>">
<?php echo esc_html( get_the_title() ); ?>
</a>
PHPخاتمة سريعة ونصيحة عملية
قدّمت لك دوالًا أساسية وشرحًا عمليًا + أمثلة جاهزة. إذا تريد، أستطيع فورًا:
- صنع قالب
single.phpمتكامل يجمع أفضل هذه الدوال مع تحسينات الأمان والهيكلية (Template Parts، Sidebar، Json-LD للـSEO)، أو - تصدير مرجع PDF لجميع الدوال مع أمثلة إضافية تناسب قوالب متعددة.
أي واحد ترغب به أطبق لك الآن (سأعرض الملف مباشرة جاهز للنسخ)?