با عرض سلام خدمت کاربران محترم سایت پی وی لرن.
با جلسه ای دیگر از سری جلسات دوره جامع آموزش ساخت قالب وردپرس در خدمت شما هستیم.
در این جلسه حلقه های وردپرس (the Loop) و کاربرد آن ها را آموزش خواهیم داد.
حلقه، مکانیزم پیشفرض وردپرس برای استخراج پست ها از طریق فایل های قالب است.
تعداد پست های بازیابی شده توسط تعداد پست هایی که در هر صفحه نمایش داده میشوند، مشخص میشود.
در داخل حلقه، وردپرس هر پست را برای نمایش در صفحه جاری بازیابی کرده و ان را بر اساس دستورالعمل های قالب، قالب بندی میکند.
حلقه، داده های هر پست را از دیتابیس وردپرس استخراج کرده و اطلاعات مناسب را به جای هر تگ قالبی، قرار میدهد.
هرگونه کد HTML یا PHP در داخل حلقه، برای تک تک پست ها اعمال میشوند.
از حلقه برای استفاده های مختلفی مانند موارد زیر استفاده میشود:
حلقه ها باید در فایل های قالبی که میخواهند اطلاعات پست ها را نمایش دهند، استفاده شود.
همچنین برای جلوگیری از نمایش هدر در هر بار اجرای حلقه، تگ ()get_header باید خارج از حلقه استفاده شود.
مثال:
1 2 3 4 5 6 7 8 | <?php get_header(); if ( have_posts() ) : while ( have_posts() ) : the_post(); // Display post content endwhile; endif; ?> |
در مثال بالا پایان حلقه با دستورات endwhile و endif مشخص شده است.
حلقه ها همیشه باید با دستورات if و while شروع شوند.
هر تگ قالبی که میخواهید به تمام پست ها اعمال شود، باید بین دستورات شروع کننده و تمام کننده حلقه قرار گیرد.
در مثال پایین کد های یک فایل index.php بسیار ساده آورده شده است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php get_header(); if ( have_posts() ) : while ( have_posts() ) : the_post(); the_content(); endwhile; else : _e( 'Sorry, no posts matched your criteria.', 'textdomain' ); endif; get_sidebar(); get_footer(); ?> |
حلقه ها میتوانند تعدادی بخش مختلف برای هر پست نمایش دهند.
در قسمت زیر تعدادی از تگ های قالب رایج که توسط بسیاری از قالب ها استفاده میشوند را لیست کرده ایم:
همچنین میتوانیم از تگ های قالب شرطی نیز استفاده کنیم:
کد زیر یک صفحه archive بسیار ساده را نمایش میدهد.
معمولا در صفحه های آرشیو لیست از پست ها که حاوی عناون، تصویر پست و خلاصه ای از محتوای پست است، نمایش داده میشود.
1 2 3 4 5 6 7 8 9 10 11 | <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); the_title( '<h2>', '</h2>' ); the_post_thumbnail(); the_excerpt(); endwhile; else: _e( 'Sorry, no posts matched your criteria.', 'textdomain' ); endif; ?> |
در مثال زیر دو کار انجام میشود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <?php // Start the Loop. if ( have_posts() ) : while ( have_posts() ) : the_post(); /* * See if the current post is in category 3. * If it is, the div is given the CSS class "post-category-three". * Otherwise, the div is given the CSS class "post". */ if ( in_category( 3 ) ) : ?> <div class="post-category-three"> <?php else : ?> <div class="post"> <?php endif; // Display the post's title. the_title( '<h2>', ';</h2>' ); // Display a link to other posts by this posts author. printf( __( 'Posted by %s', 'textdomain' ), get_the_author_posts_link() ); // Display the post's content in a div. ?> <div class="entry"> <?php the_content() ?> </div> <?php // Display a comma separated list of the post's categories. _e( 'Posted in ', 'textdomain' ); the_category( ', ' ); // closes the first div box with the class of "post" or "post-cat-three" ?> </div> <?php // Stop the Loop, but allow for a "if not posts" situation endwhile; else : /* * The very first "if" tested to see if there were any posts to * display. This "else" part tells what do if there weren't any. */ _e( 'Sorry, no posts matched your criteria.', 'textdomain' ); // Completely stop the Loop. endif; ?> |
جلسه آموزش حلقه های وردپرس نیز به پایان رسید.
در جلسه بعد توابع قالب را آموزش خواهیم داد.