منطق حلقه وردپرس
برای شروع کار با منطق، اجازه دهید نگاهی به کد اصلی حلقه بیندازیم. سپس می توانیم برای درک بهتر هر سطر را توضیح دهیم.
//Check If posts exist, if yes then execute while loop <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> //Display Posts code here <h2><?php the_title() ;?></h2> //Display the title of the post <?php the_post_thumbnail(); ?> //Display the post thumbnail AKA featured image <?php the_excerpt(); ?> //Display excerpt of the post <?php endwhile; else : ?> //End the while loop <p><?php _e( 'No Posts To Display.' ); ?></p> <?php endif; ?> //end If statement
حلقه “while” همچنین عملکرد وردپرس “have_posts” را دارد. “true” برابر با تعداد دفعاتی که ما پست های وبلاگ را تنظیم کرده ایم تا نمایش داده شوند باز می گردد.
کد سپس با عملکرد وردپرس “the_post” ادامه می یابد. این تابع پست را تنظیم می کند و سپس می توان از توابع بیشتری برای استخراج عناصر از پست ها استفاده کرد. در مثال گفته شده فوق ما استفاده کرده ایم از:
- the_title » عنوان پست را بارگیری می کند
- the_post_thumbnail » تصویر شاخص پست وبلاگ را بارگیری می کند
- the_excerpt » گزیده ای از پست وبلاگ را دریافت می کند
مطمئناً توابع بیشتری وجود دارد که ما می توانیم از آنها برای استخراج عناصر از پست ها استفاده کنیم، در ادامه به چند نمونه از آنها خواهیم پرداخت.
هایپر لینک در عنوان پست
احتمالاً دیده اید که عناوین پست وبلاگ لینک هایی به پست های واقعی دارند. پس از کلیک بر روی لینک، به صفحه نمایش پست موردنظر وبلاگ هدایت می شوید. بیشتر قالب های وردپرس دارای فایلی به نام single.php هستند، این فایل هنگام مشاهده پست تک خوانده می شود.
ما از تابع “the_permalink” استفاده می کنیم و عملکرد “the_title” را برای پیوند آن محصور می کنیم.
مثال:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title() ;?></a></h2> <?php the_post_thumbnail(); ?> <?php the_excerpt(); ?> <?php endwhile; else : ?> //End the while loop <p><?php _e( 'No Posts To Display.' ); ?></p> <?php endif; ?>
نمایش محتوا ، نویسنده ، تاریخ و دسته با استفاده از حلقه
ممکن است در بسیاری از وبلاگ ها، مشاهده کرده باشید که پست ها با نام نویسنده، کل محتوای صفحه اصلی وبلاگ با تاریخ و دسته بندی نمایش داده می شود.
با استفاده از توابع زیر می توانید به راحتی تمام این جزئیات مفید را درون حلقه به نمایش بگذارید:
- the_content » محتوای کامل وبلاگ را نمایش می دهد
- then_author » نام نویسنده را نمایش می دهد
- the_time » زمان و تاریخ را نمایش می دهد
- the_category » دسته نوشته را نمایش می دهد
مثال:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h2><?php the_title() ;?></h2> <?php the_author(); ?> <?php the_time('F j, Y'); ?> <?php the_category(); ?> <?php the_post_thumbnail(); ?> <?php the_content(); ?> <?php endwhile; else : ?> //End the while loop <p><?php _e( 'No Posts To Display.' ); ?></p> <?php endif; ?>
استفاده از برچسب های شرطی
برچسب های زیادی برای بررسی شرایط وجود دارد، اما خوشبختانه، در وردپرس این برچسب ها کاملاً توضیح داده شده اند. به عنوان مثال، “is_home” بررسی می کند که آیا نمای فعلی از صفحه اصلی (صفحه اصلی وبلاگ) است. برای شروع حلقه های خاص می توانیم از برچسب های شرطی استفاده کنیم.
به عنوان مثال، اگر ما حلقه خود را بین شرط “if” محصور کنیم که بررسی کند صفحه فعلی صفحه اصلی باشد، حلقه فقط در صفحه اصلی اجرا می شود.
<?php if (is_home()) { //Returns true if current page is main/home page <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h2><?php the_title() ;?></h2> <?php the_post_thumbnail(); ?> <?php the_excerpt(); ?> <?php endwhile; else : ?> <p><?php _e( 'No Posts To Display.' ); ?></p> <?php endif; ?> } ?>
ما می توانیم از برچسب های شرطی در پرونده های قالب خود استفاده کنیم تا کنترل کنیم که Loop چگونه اجرا شده است، بنابراین چندین حلقه در یک فایل واحد وجود دارد.
برخی از برچسب های شرطی که بیشترین استفاده را دارند.
- is_admin() » با ورود مدیر در سایت درست می شود.
- is_single() » اگر پست تک در حال مشاهده باشد، درست است.
- is_page() » در صفحات خاصی صحیح است. به عنوان مثال: is_page(‘about-us’)
- is_category() » در صفحات دسته بندی صحیح است، به عنوان مثال: is_category(‘wordpress’)
- is_tag() » برای برچسب ها درست است.
- is_author() » برای نویسنده درست است.
- is_404() » اگر صفحه وجود نداشته باشد، در صفحه 404 برای اجرای یک حلقه سفارشی شده قابل استفاده است.
- has_excerpt() » در صورتی که پست دارای چکیده ای باشد، درست است.
5 حلقه مفید در وردپرس
بیایید به پنج حلقه مشترک در وردپرس نگاهی بیندازیم.
1. درج تبلیغات بعد از اولین پست
اگر بعد از اولین پست نیاز به قرار دادن تبلیغات دارید، این راهی برای انجام این کار است.
<?php if (have_posts()) : ?> <?php $count = 0; ?> <?php while (have_posts()) : the_post(); ?> <?php $count++; ?> <?php if ($count == 2) : ?> //Paste your ad code here <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php else : ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php endif; ?> <?php endwhile; ?> <?php endif; ?>
فقط کافیست کد تبلیغ خود را بچسبانید و تبلیغ بعد از اولین پست قرار می گیرد.
2. دریافت پست بین دو تاریخ
یکی از موارد استفاده متداول، واکشی پست ها برای یک دوره زمانی خاص است. برای این کار، از حلقه وردپرس مانند این استفاده کنید.
<?php function filter_where($where = ’) { $where .= " AND post_date >= '2009-03-17' AND post_date <= '2009-05-03'"; return $where; } add_filter('posts_where', 'filter_where'); query_posts($query_string); while (have_posts()) : the_post(); the_content(); endwhile; ?>
در داخل کد، ما از یک تابع SQL استفاده می کنیم که شامل بند WHERE است. تابع filter_where سپس به عملکرد post_where() قلاب شده است.
3. لیست پست های آینده
لیستی از پست های آینده روشی هوشمندانه برای نگه داشتن بازدید کنندگان در وبلاگ شما است. این کار از طریق حلقه زیر حاصل می شود.
<?php query_posts('showposts=10&post_status=future'); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h2><?php the_title(); ?></h2> <span class="datetime"><?php the_time('j. F Y'); ?></span></p> <?php endwhile; else: ?><p>No future events scheduled.</p> <?php endif; ?>
در کد فوق، ما از تابع post_status برای واکشی پست ها با توجه به تاریخ انتشار آنها استفاده می کنیم.
4. ایجاد صفحه آرشیو
صفحه آرشیو راهی عالی برای لیست کردن بهترین مطالب قدیمی شما است تا خوانندگان بتوانند همچنان آنها را در وبلاگ شما پیدا کنند. برای نمایش پست های بایگانی شده حتماً یک صفحه الگو ایجاد کنید.
<?php /* Template Name: Archives */ ?> <?php get_header(); ?> <h2><?php $numposts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'publish'"); if (0 < $numposts) $numposts = number_format($numposts); ?> <h2><?php echo $numposts.' recipes published since October 06, 2008'; ?> </h2> <ul id="archive-list"> <?php $myposts = get_posts('numberposts=-1&'); foreach($myposts as $post) : ?> <li><?php the_time('m/d/y') ?>: <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> </ul> <?php get_sidebar(); ?> <?php get_footer(); ?>
5. ایجاد حلقه تصویر
حلقه تصویر یک روش عالی برای نمایش پست های وبلاگ شما در یک صفحه نمایش گالری مانند است. هر نوشته با یک تصویر و چکیده ای از آن نمایش داده می شود.
بیایید ببینیم چگونه این کار را با استفاده از حلقه های وردپرس انجام دهیم:
function catch_that_image() { global $post, $posts; $first_img = ’; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=['"]([^'"]+)['"].*>/i', $post->post_content, $matches); $first_img = $matches [1] [0]; if(empty($first_img)){ //Defines a default image $first_img = "/images/default.jpg"; } return $first_img; }
برای نمایش تصاویر بر روی یک مرورگر، کد زیر را اضافه کنید.
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> <a href="<?php the_permalink();?>" title="<?php the_title(); ?>" class="img-loop"> <img src="https://www.smashingmagazine.com/wp-content/uploads/images/wordpress-loop-hacks/<?php echo catch_that_image() ?>" alt="<?php the_title(); ?>" /> </a> endwhile; endif; ?>
از عملکرد have_posts وردپرس برای بررسی اینکه آیا داده ای برای حلقه در دسترس است استفاده می شود. در صورت موجود بودن داده، این درست بر می گردد.
جمع بندی
حلقه را به عنوان موتور محرک قالب وردپرس بیاندیشید. استفاده از آن برای نمایش پست ها کاملاً ضروری است. در این مقاله ما مبانی را توضیح داده ایم، اما روش های زیادی وجود دارد که می توانید از یک حلقه استفاده کنید، برای اطلاعات بیشتر صفحه the Loop in action را ببینید.
سلام ، راهی وجود نداره که the_title رو به متغییر تبدیل کنیم؟