حلقه وردپرس چیست؟
وردپرس یک سیستم مدیریت محتوا (CMS) است که به شما امکان میدهد بدون نیاز به دانش برنامهنویسی، وبسایتهای زیبا و حرفهای بسازید. وردپرس از زبان برنامهنویسی PHP و پایگاه داده MySQL برای ذخیره و پردازش اطلاعات استفاده میکند. وردپرس از یک سیستم قالببندی استاندارد به نام قالب وردپرس (WordPress Theme) برای طراحی و نمایش وبسایتها استفاده میکند. قالب وردپرس شامل یک مجموعه از فایلهای PHP، HTML، CSS و JavaScript است که مشخص میکنند که وبسایت شما چگونه به نظر برسد و عمل کند.
حلقه وردپرس چیست؟
یکی از مهمترین بخشهای قالب وردپرس، حلقه وردپرس (WordPress Loop) است. اما حلقه وردپرس چیست؟! حلقه وردپرس یک مکانیزم است که به وردپرس امکان میدهد پستها و صفحات وبسایت شما را از پایگاه داده بازیابی کرده و در صفحه جاری نمایش دهد. حلقه وردپرس با استفاده از توابع وردپرس و شرطهای خاصی، اطلاعات مربوط به پستها را از پایگاه داده وردپرس بازیابی میکند و طبق دستورات شما، آنها را در صفحه جاری قرار میدهد. WordPress Loop میتواند عناصر مختلفی از پستها را نمایش دهد، مانند عنوان، تصویر شاخص، گزیده، محتوا، نویسنده، تاریخ، دستهبندی، برچسب و غیره.
حلقه وردپرس به صورت پیشفرض در فایلهای index.php، single.php، page.php و archive.php قالب وردپرس شما قرار دارد. اما شما میتوانید حلقه وردپرس را در هر فایل دیگری از قالب خود نیز قرار دهید. برای این کار، شما باید از ساختار زیر استفاده کنید:
PHP
2
3 <
4 ? php if (have_posts())
5 : while (have_posts())
6 : the_post();
7? >
8
9 کدهای نمایش پستها در اینجا قرار میگیرند.
10
11 <
12 ? php endwhile;
13else
14 :
15 ? >
16
17 کدهای نمایش پیغام خطا در صورت عدم وجود پست در اینجا قرار
18 میگیرند.
19
20 <
21 ? php endif;
22? >
در این ساختار، ابتدا یک شرط if بررسی میکند که آیا پستی برای نمایش وجود دارد یا خیر. اگر پستی وجود داشته باشد، یک حلقه while شروع میشود که تا زمانی که پستی وجود داشته باشد، کدهای درون آن را اجرا میکند. در این حلقه، تابع the_post() پست فعلی را تنظیم میکند و سپس میتوانید از توابع دیگری برای نمایش عناصر مختلف پست استفاده کنید. در صورتی که پستی وجود نداشته باشد، کدهای بخش else اجرا میشوند که معمولاً یک پیغام خطا را نمایش میدهند.
در این مقاله، ما قصد داریم بگوییم که حلقه وردپرس چیست و چگونه میتوانید از آن برای نمایش پستها و صفحات وبسایت خود استفاده کنید. ابتدا به مفهوم و ساختار حلقه وردپرس میپردازیم و سپس به بررسی توابع وردپرس و شرطهای مختلفی که در حلقه وردپرس میتوانید از آنها استفاده کنید.
پیشنهاد مطالعه: ووکامرس چیست و چگونه از آن استفاده کنیم + نحوه راه اندازی
نمونه ای از حلقه وردپرس
برای درک بهتر اینکه متوجه شویم حلقه وردپرس چیست، بهتر است که یک نمونه از آن را در عمل ببینیم. در این بخش، ما قصد داریم یک حلقه وردپرس ساده را در فایل index.php قالب وردپرس خود بنویسیم. این حلقه وردپرس قرار است عنوان، تصویر شاخص، گزیده و لینک ادامه مطلب را برای هر پست نمایش دهد.
ابتدا، باید فایل index.php را باز کنید و کدهای زیر را در آن قرار دهید:
php
2
3<?php get_header(); // فراخوانی فایل header.php ?>
4
5
6
7
8<div class="container">
9
10 <div class="row">
11
12 <div class="col-md-8">
13
14 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); // شروع حلقه وردپرس ?>
15
16 <div class="post">
17
18 <h2 class="post-title"><a href="<?php the_permalink(); // لینک پست ?>"><?php the_title(); // عنوان پست ?></a></h2>
19
20 <?php if ( has_post_thumbnail() ) : // بررسی وجود تصویر شاخص ?>
21
22 <div class="post-thumbnail">
23
24 <?php the_post_thumbnail(); // نمایش تصویر شاخص ?>
25
26 </div>
27
28 <?php endif; ?>
29
30 <div class="post-excerpt">
31
32 <?php the_excerpt(); // نمایش گزیده پست ?>
33
34 </div>
35
36 <div class="post-more">
37
38 <a href="<?php the_permalink(); // لینک پست ?>" class="btn btn-primary">ادامه مطلب</a>
39
40 </div>
41
42 </div>
43
44 <?php endwhile; else : // پایان حلقه وردپرس و شروع بخش خطا ?>
45
46 <p>متاسفانه پستی برای نمایش وجود ندارد.</p>
47
48 <?php endif; ?>
49
50 </div>
51
52 <div class="col-md-4">
53
54 <?php get_sidebar(); // فراخوانی فایل sidebar.php ?>
55
56 </div>
57
58 </div>
59
60</div>
61
62
63
64
65<?php get_footer(); // فراخوانی فایل footer.php ?>
در این کد، ما از توابع وردپرس مختلفی برای نمایش عناصر پست استفاده کردهایم. این توابع عبارتند از:
- get_header(): این تابع فایل php را فراخوانی میکند که شامل بخش سربرگ وبسایت است.
- have_posts(): این تابع بررسی میکند که آیا پستی برای نمایش وجود دارد یا خیر.
- the_post(): این تابع پست فعلی را تنظیم میکند و به پست بعدی میرود.
- the_title(): این تابع عنوان پست فعلی را نمایش میدهد.
- the_permalink(): این تابع لینک پست فعلی را برمیگرداند.
- has_post_thumbnail(): این تابع بررسی میکند که آیا پست فعلی دارای تصویر شاخص است یا خیر.
- the_post_thumbnail(): این تابع تصویر شاخص پست فعلی را نمایش میدهد.
- the_excerpt(): این تابع گزیده پست فعلی را نمایش میدهد.
- get_sidebar(): این تابع فایل php را فراخوانی میکند که شامل بخش نوار کناری وبسایت است.
- get_footer(): این تابع فایل php را فراخوانی میکند که شامل بخش پاورقی وبسایت است.
با استفاده از این کد، ما میتوانیم یک حلقه وردپرس ساده را در وبسایت خود داشته باشیم.
شرط های حلقه وردپرس چیست؟
بعد از دانستن اینکه حلقه وردپرس چیست، شرطهای حلقه وردپرس را باید دانست. حلقه وردپرس به صورت پیشفرض تمام پستها را نمایش میدهد، اما ممکن است شما بخواهید فقط برخی از پستها را نمایش دهید. برای این کار، شما میتوانید از شرطهای حلقه وردپرس استفاده کنید.
شرطهای حلقه وردپرس به شما امکان میدهند که بر اساس معیارهای مختلفی مانند نوع پست، دستهبندی، برچسب، تاریخ، نویسنده و غیره، پستها را فیلتر کنید. شما میتوانید از تابع query_posts() برای اعمال شرطهای حلقه وردپرس استفاده کنید.
این تابع یک آرایه از پارامترهای مختلف را به عنوان ورودی میگیرد و پستهای مطابق با آن را بازیابی میکند. برای مثال، اگر شما بخواهید فقط پستهایی را نمایش دهید که در دستهبندی «وردپرس» قرار دارند، میتوانید از کد زیر استفاده کنید:
PHP
5
6<?php query_posts( array( 'category_name' => 'wordpress' ) ); // فیلتر کردن پستها بر اساس دستهبندی وردپرس ?>
7
8<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); // شروع حلقه وردپرس ?>
9
10// کدهای نمایش پستها در اینجا قرار میگیرند.
11
12<?php endwhile; else : // پایان حلقه وردپرس و شروع بخش خطا ?>
13
14// کدهای نمایش پیغام خطا در صورت عدم وجود پست در اینجا قرار میگیرند.
15
16<?php endif; ?>
17
18<?php wp_reset_query(); // بازنشانی حلقه وردپرس به حالت پیشفرض» ?>
پارامتر های مهم در تابع کوئری پست (query_posts) حلقه وردپرس چیست؟
برخی از پارامترهای مهمی که میتوانید در تابع query_posts() استفاده کنید عبارتند از:
- – p: شناسه پستی که میخواهید نمایش دهید. برای مثال، p=12 فقط پستی را نمایش میدهد که شناسه آن 12 است.
- – name: نام منحصر به فرد پستی که میخواهید نمایش دهید. برای مثال، name=hello-world فقط پستی را نمایش میدهد که نام آن hello-world است.
- – page_id: شناسه صفحهای که میخواهید نمایش دهید. برای مثال، page_id=5 فقط صفحهای را نمایش میدهد که شناسه آن 5 است.
- – pagename: نام منحصر به فرد صفحهای که میخواهید نمایش دهید. برای مثال، pagename=about-us فقط صفحهای را نمایش میدهد که نام آن about-us است.
- – cat: شناسه دستهبندیای که میخواهید پستهای آن را نمایش دهید. برای مثال، cat=3 فقط پستهایی را نمایش میدهد که در دستهبندی با شناسه 3 قرار دارند.
- – category_name: نام دستهبندیای که میخواهید پستهای آن را نمایش دهید. برای مثال، category_name=wordpress فقط پستهایی را نمایش میدهد که در دستهبندی وردپرس قرار دارند.
- – tag: نام برچسبی که میخواهید پستهای آن را نمایش دهید. برای مثال، tag=php فقط پستهایی را نمایش میدهد که برچسب php دارند.
- – tag_id: شناسه برچسبی که میخواهید پستهای آن را نمایش دهید. برای مثال، tag_id=7 فقط پستهایی را نمایش میدهد که برچسب با شناسه 7 دارند.
- – year: سالی که میخواهید پستهای آن را نمایش دهید. برای مثال، year=2023 فقط پستهایی را نمایش میدهد که در سال 2023 انتشار یافتهاند.
- – monthnum: ماهی که میخواهید پستهای آن را نمایش دهید. برای مثال، monthnum=4 فقط پستهایی را نمایش میدهد که در ماه 4 (آوریل) انتشار یافتهاند.
- – day: روزی که میخواهید پستهای آن را نمایش دهید. برای مثال، day=15 فقط پستهایی را نمایش میدهد که در روز 15 انتشار یافتهاند.
- – author: شناسه نویسندهای که میخواهید پستهای آن را نمایش دهید. برای مثال، author=2 فقط پستهایی را نمایش میدهد که توسط نویسنده با شناسه 2 نوشته شدهاند.
- – author_name: نام نویسندهای که میخواهید پستهای آن را نمایش دهید. برای مثال، author_name=ali فقط پستهایی را نمایش میدهد که توسط نویسنده با نام ali نوشته شدهاند.
- – post_type: نوع پستی که میخواهید نمایش دهید. برای مثال، post_type=post فقط پستهای معمولی را نمایش میدهد و post_type=page فقط صفحات را نمایش میدهد. شما میتوانید از افزونه های پست سفارشی (Custom Post Type) نیز استفاده کنید. برای مثال، post_type=product فقط پستهایی را نمایش میدهد که نوع آنها product است.
- – post_status: وضعیت پستی که میخواهید نمایش دهید. برای مثال، post_status=publish فقط پستهای منتشر شده را نمایش میدهد و post_status=draft فقط پستهای پیشنویس را نمایش میدهد. شما میتوانید از وضعیتهای دیگری مانند pending، future و trash نیز استفاده کنید.
این فقط بخشی از پارامترهایی است که میتوانید در تابع query_posts() استفاده کنید.
توج داشته باشید که میتوان از چندین پارامتر به صورت همزمان در تابع کوئری پست query_posts() استفاده کرد. برای این کار، شما باید پارامترها را با علامت & از هم جدا کنید. برای مثال، اگر شما بخواهید فقط پستهایی را نمایش دهید که در دستهبندی وردپرس قرار دارند و توسط نویسنده با نام ali نوشته شدهاند، میتوانید از کد زیر استفاده کنید:
php
2
3<?php query_posts( 'category_name=wordpress&author_name=ali' ); // فیلتر کردن پستها بر اساس دستهبندی وردپرس و نویسنده ali ?>
4
5<?php if ( have_posts() ) : while ( have_posts()) : the_post(); // شروع حلقه وردپرس ?>
6
7// کدهای نمایش پستها در اینجا قرار میگیرند.
8
9<?php endwhile; else : // پایان حلقه وردپرس و شروع بخش خطا ?>
10
11// کدهای نمایش پیغام خطا در صورت عدم وجود پست در اینجا قرار میگیرند.
12
13<?php endif; ?>
14
15<?php wp_reset_query(); // بازنشانی حلقه وردپرس به حالت پیشفرض ?>
با استفاده از این کد، ما میتوانیم یک حلقه وردپرس سفارشی را در وبسایت خود داشته باشیم که فقط پستهایی را نمایش میدهد که در دستهبندی وردپرس قرار دارند و توسط نویسنده با نام ali نوشته شدهاند.
تابع wp_reset_query() در انتهای کد مسئول بازنشانی حلقه وردپرس به حالت پیشفرض است. این تابع باید همیشه پس از استفاده از تابع کوئری پست، فراخوانی شود، تا از اختلال در حلقههای بعدی جلوگیری شود.
پیشنهاد مطالعه: بررسی عللهای کندی پیشخوان وردپرس و روشهای حل آن
حلقه وردپرس چندگانه
حالا بیایید ببینیم که چندگانه بودنِ حلقه وردپرس چیست. گاهی اوقات، شما ممکن است بخواهید بیش از یک حلقه وردپرس را در یک صفحه داشته باشید. برای مثال، شما ممکن است بخواهید در صفحه اصلی وبسایت خود، یک حلقه وردپرس را برای نمایش پستهای اخیر و یک حلقه وردپرس دیگر را برای نمایش پستهای محبوب داشته باشید. در این صورت، شما باید از حلقه وردپرس چندگانه (Multiple WordPress Loop) استفاده کنید.
حلقه وردپرس چندگانه به شما امکان میدهد که چندین حلقه وردپرس را با شرطهای مختلف در یک صفحه داشته باشید. برای ایجاد حلقه وردپرس چندگانه، شما باید از کلاس کوئری وردپرس (WP_Query) استفاده کنید. این کلاس به شما امکان میدهد که یک شیء از نوع حلقه وردپرس را با پارامترهای دلخواه ایجاد کنید و از آن برای نمایش پستها استفاده کنید. برای مثال، اگر شما بخواهید در صفحه اصلی وبسایت خود، یک حلقه وردپرس را برای نمایش پستهای اخیر و یک حلقه وردپرس دیگر را برای نمایش پستهای محبوب داشته باشید، میتوانید از کد زیر استفاده کنید:
PHP
2
3<?php get_header(); // فراخوانی فایل header.php ?>
4
5
6
7
8<div class="container">
9
10 <div class="row">
11
12 <div class="col-md-8">
13
14 <h3>پستهای اخیر</h3>
15
16 <?php $recent_posts = new WP_Query( array( 'posts_per_page' => 5 ) ); // ایجاد یک شیء از نوع حلقه وردپرس برای نمایش 5 پست اخیر ?>
17
18 <?php if ( $recent_posts->have_posts() ) : while ( $recent_posts->have_posts() ) : $recent_posts->the_post(); // شروع حلقه وردپرس اول ?>
19
20 <div class="post">
21
22 <h4 class="post-title"><a href="<?php the_permalink(); // لینک پست ?>"><?php the_title(); // عنوان پست ?></a></h4>
23
24 <div class="post-meta">
25
26 <span class="post-date"><?php the_time( 'j F Y' ); // تاریخ پست ?></span>
27
28 <span class="post-author"><?php the_author(); // نویسنده پست ?></span>
29
30 </div>
31
32 <div class="post-excerpt">
33
34 <?php the_excerpt(); // نمایش گزیده پست ?>
35
36 </div>
37
38 <div class="post-more">
39
40 <a href="<?php the_permalink(); // لینک پست ?>" class="btn btn-primary">ادامه مطلب</a>
41
42 </div>
43
44 </div>
45
46 <?php endwhile; wp_reset_postdata(); // پایان حلقه وردپرس اول و بازنشانی پست فعلی ?>
47
48 <?php else : // شروع بخش خطا ?>
49
50 <p>متاسفانه پستی برای نمایش وجود ندارد.</p>
51
52 <?php endif; ?>
53
54
55
56
57 <h3>پستهای محبوب</h3>
58
59 <?php $popular_posts = new WP_Query( array( 'meta_key' => 'views', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'posts_per_page' => 5 ) ); // ایجاد یک شیء از نوع حلقه وردپرس برای نمایش 5 پست محبوب بر اساس تعداد بازدید ?>
60
61 <?php if ( $popular_posts->have_posts() ) : while ( $popular_posts->have_posts() ) : $popular_posts->the_post(); // شروع حلقه وردپرس دوم ?>
62
63 <div class="post">
64
65 <h4 class="post-title"><a href="<?php the_permalink(); // لینک پست ?>"><?php the_title(); // عنوان پست ?></a></h4>
66
67 <div class="post-meta">
68
69 <span class="post-date"><?php the_time( 'j F Y' ); // تاریخ پست ?></span>
70
71 <span class="post-author"><?php the_author(); // نویسنده پست ?></span>
72
73 <span class="post-views"><?php echo get_post_meta( get_the_ID(), 'views', true ); // تعداد بازدید پست ?></span>
74
75 </div>
76
77 <div class="post-excerpt">
78
79 <?php the_excerpt(); // نمایش گزیده پست ?>
80
81 </div>
82
83 <div class="post-more">
84
85 <a href="<?php the_permalink(); // لینک پست ?>" class="btn btn-primary">ادامه مطلب</a>
86
87 </div>
88
89 </div>
90
91 <?php endwhile; wp_reset_postdata(); // پایان حلقه وردپرس دوم و بازنشانی پست فعلی ?>
92
93 <?php else : // شروع بخش خطا ?>
94
95 <p>متاسفانه پستی برای نمایش وجود ندارد.</p>
96
97 <?php endif; ?>
98
99 </div>
100
101 <div class="col-md-4">
102
103 <?php get_sidebar(); // فراخوانی فایل sidebar.php ?>
104
105 </div>
106
107 </div>
108
109</div>
110
111
112
113
114<?php get_footer(); // فراخوانی فایل footer.php ?>
در این کد، ما از دو شیء مختلف از نوع حلقه وردپرس استفاده کردهایم. این شیءها عبارتند از:
- $recent_posts: این شیء یک حلقه وردپرس را برای نمایش 5 پست اخیر ایجاد میکند. ما از پارامتر posts_per_page برای مشخص کردن تعداد پستها استفاده کردهایم.
- $popular_posts: این شیء یک حلقه وردپرس را برای نمایش 5 پست محبوب بر اساس تعداد بازدید ایجاد میکند. ما از پارامترهای meta_key، orderby، order و posts_per_page برای مشخص کردن معیارهای فیلتر کردن پستها استفاده کردهایم.
برای استفاده از این شیءها، ما باید از متدهای have_posts() و the_post() استفاده کنیم. این متدها مشابه توابعی هستند که در حلقه وردپرس پیشفرض استفاده میشوند، با این تفاوت که باید به عنوان یک متد از شیء حلقه وردپرس فراخوانی شوند. برای مثال، $recent_posts->have_posts() و $recent_posts->the_post().
همچنین، ما باید پس از پایان هر حلقه وردپرس، از متد wp_reset_postdata() استفاده کنیم. این متد مسئول بازنشانی پست فعلی به پست اصلی است. این متد باید همیشه پس از استفاده از کلاس WP_Query فراخوانی شود، تا از اختلال در حلقههای بعدی جلوگیری شود. حالا متوجه شدیم چندگانه بودن حلقه وردپرس چیست و با استفاده از این کد، یک حلقه وردپرس چندگانه در وبسایت خود داشته باشیم که پستهای اخیر و محبوب را به صورت زیر نمایش میدهد:
سخن پایانی
در این مقاله، ما به شما آموزش دادیم که حلقه وردپرس چیست و چگونه میتوانید از آن برای نمایش پستها و صفحات وبسایت خود استفاده کنید. ما ابتدا به مفهوم و ساختار حلقه وردپرس پرداختیم و سپس به بررسی توابع و شرطهای مختلفی که در حلقه وردپرس میتوانید از آنها استفاده کنید میپرداختیم. در انتها، ما چند نمونه از حلقه وردپرس ساده و حلقه وردپرس چندگانه را برای شما نوشتیم.
امیدواریم که این مقاله برای شما مفید واقع شده باشد و بتوانید با استفاده از حلقه وردپرس، وبسایتهای زیبا و حرفهای بسازید. اگر سوالی داشتید، میتوانید در قسمت نظرات با ما در میان بگذارید. موفق باشید.
آموزش وردپرس با مکتب خونه
اگر علاقهمند به یادگیری وردپرس بهصورت کامل و حرفهای هستید، میتوانید از پکیج های آموزشی وردپرس در مکتبخونه استفاده کنید. این پکیجها شامل دورههای مقدماتی، پیشرفته و تخصصی وردپرس هستند که به شما کمک میکنند تا از صفر تا صد وردپرس را بیاموزید و وبسایتهای زیبا و قدرتمندی را با این سیستم مدیریت محتوا بسازید. مکتبخونه به شما این فرصت را میدهد که با هزینههای اندک و با کیفیت بالا وردپرس را یاد بگیرید و وبسایت خود را راهاندازی کنید. پس از این فرصت استثنایی از دست ندهید و همین حالا عضو مکتبخونه شوید.