وباکا

آموزش تخصصی برنامه نویسی وب

در بخش های قبلی با حلقه اصلی وردپرس آشنا شدید، این حلقه درهمه صفحات قابل استفاده است و لیستی از نوشته ها را به ما می دهد، این نوشته ها ممکن است آخرین نوشته های سایت باشد یا نوشته های یک دسته یا برچسب انتخاب شده، نتیجه یک جستجو یا … باشد. در هر صورت طراح پوسته روی نوشته هایی که در حلقه اصلی بدست می آید دخل و تصرفی ندارد.

وردپرس امکاناتی برای طراحی پوسته فراهم می کند تا نوشته های مورد نظرش را بر حسب ویژگی های مختلف به دفعات در جاهای مختلف صفحه از بانک اطلاعاتی خوانده و به دلخواه نمایش دهد. به عنوان مثال می تواند با اجرای دستوراتی، پر بازدیدترین مطالب سایت را نمایش دهد.

برای این منظور باید با دستوراتی یک پرس و جو اجرای کند و نتایج آنرا یکی یکی استخراج کرده و نمایش دهد. توابع و کلاس هایی که برای خواندن نوشته ها استفاده می شوند عباتند از:

  • تابع get_posts
  • تابع (کلاس) WP_Query

هر کدام از این دو دارای یک آرگومان هستند که به صورت آرایه انجمنی بوده و هر خانه آن برای تعیین ویژگی های مورد نظر در نوشته ها استفاده می شود.

 

تابع سازنده  WP_Query  تعداد زیادی آرگومان (پارامتر ورودی) دارد که قابلیت انعطاف بالایی به آن داده است. با کمک این تابع می توان لیستی از پست های دلخواه و با ویژگی های مورد نظر از ورد پرس را بدست آورد.

هنگام استفاده از کلاس  WP_Query چهار عنصر اصلی خواهیم داشت:

  1. پارامترهای تابع برای پرس و جو
  2. خود پرس و جو
  3. حلقه تکرار
  4. تمام کردن و ری ست کردن نتایج

مثال زیر روش استفاده از تابع WP_Query را نشان می دهد:
<?php
$args = array(
// آرگومانهایی برای پرس و جو.
);
// پرس و جوی دلخواه.
$query = new WP_Query( $args );//بررسی اینکه پرس و جو نتیجه ای دارد یا خیر
if ( $query->have_posts() ) {//شروع حلقه تکرار برای پردازش نتایج پرس و جو
while ( $query->have_posts() ) {
$query->the_post();
// نمایش محتوا و مشخصات پست ها
}
}
// بازیابی مقادیر اولیه پست ها و ری ست کردن
wp_reset_postdata();
?>

آرگومانها به وردپرس می گویند که کدام داده ها از بانک اطلاعاتی خوانده شوند و برای تعیین آنها از آرایه $args بصورت زیر استفاده می شود:
$args = array(
// Arguments for your query.
);

آرگومان ها در یک آرایه انجمنی قرار می گیرند  و در ادامه یاد میگیرید برای خواندن پست ها بر اساس دسته بندی ها و برچسب ها ، چه آرگومان هایی و به چه صورت استفاده کنید.

کدنویسی آرگومان ها

یک روش خاص برای کدنویسی آرگومان ها به صورت زیر وجود دارد:
$args = array(
'parameter1' => 'value',
'parameter2' => 'value',
'parameter3' => 'value'
);

نام آرگومان ها و مقدار آنها باید داخل نقل قول قرار داده شوند ، بین نام پارامتر و مقدار آن علامت => قرار گرفته بین هر دو پارامتر علامت ویرگول نوشته می شود. اگر آرگومان ها را اشتباه بنویسید وردپرس از آنها استفاده نکرده و نتیجه ای بدست نخواهد آمد.

متغیر $args یک آرایه است که شرایط مورد نظر برای نوشته ها را تعیین می کند بعنوان مثال برای بدست آوردن آخرین نوشته ها می نویسیم:
$args =  array(
'order'  => 'DESC',
'orderby'  => 'date',
'numberposts' => 5
);

  • خاصیت order با DESC مقداردهی شده و ترتیب را نزولی تعیین می کند.
  • خاصیت orderby تعیین می کند که ترتیب بر اساس تاریخ نوشته ها باشد.
  • خاصیت numberposts تعیین می کند که تعداد 5 نوشته خوانده شود.

 

یا بعنوان مثالی دیگر آرایه $args زیر تعداد 5 نوشته ی تصادفی را تعیین می کند:
$qargs = array( 'orderby'=> 'rand' , 'numberposts' => 5  );

در ادامه به ذکر مثال های کاربردی از کاربرد کلاس WP_Query می پردازیم:

مثال 1- نمایش عنوان و چکیده ی 10 تا از آخرین نوشته ها
<?php
$args =  array(
'order'  => 'DESC',
'orderby'  => 'date',
'offset'  => 0 ,
'numberposts' => 10  );
$query = new WP_Query( $args );
if ($query->have_posts() ) :
?>
<ul>
<?php
while($query->have_posts() ) :
$query->the_post(); ?>
<li><a href=" <?php the_permalink(); ?>"> <?php the_title(); ?> </a> </li>
<?php
endwhile;
?>
</ul>
<?php
endif;
wp_reset_query();
?>

مثال 2- نمایش 5 تا از پربازدیدترین نوشته ها
<?php
$args = array(
'post_type'  => 'post',
'order'  => 'DESC',
'orderby'  => 'meta_value_num',
'meta_key'  => 'post_views_count');
$query = new WP_Query( $qargs );
if ($query->have_posts() ) :?>
<ul>
<?php
while($query->have_posts() ) :
$query->the_post(); ?>
<li><a href=" <?php the_permalink(); ?>"> <?php the_title(); ?> </a> </li>
<?php            endwhile;     ?>
</ul>
<?php                        endif;             wp_reset_query();                                    ?>

مثال 3 – نمایش 10 تا از نوشته های مرتبط (با دسته بندی مشابه) با نوشته جاری
$post_id = get_the_ID();
$custom_taxterms = wp_get_object_terms( $post_id
,'category', array('fields' => 'ids') );
$args = array(
'posts_per_page' => 20,
'orderby'=> 'date',
'order' => 'DESC',
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $custom_taxterms
)
),
'post__not_in' => array ($post_id)
);

در این مثال ابتدا با کمک تابع get_the_ID شناسه نوشته  در متغیر $post_id قرار داده شده وبا کمک تابع wp_get_object_terms لیست دسته های مربوط به نوشته جاری بدست آمده است و سپس در آرایه ی $args از لیست دسته ها برای فیلتر کردن نوشته ها استفاده شده است.

 

 

بعنوان مثال کامل تر می توانیم در ادامه نمایش یک تک نوشته در صفحه single.php ، لیست 10 تا از جدیدترین نوشته ها را داشته باشیم.

محتوای فایل single.php
<?php get_header(); ?>
<tr>
<td width="200">
<?php get_sidebar(); ?>
</td>
<td >
<?php the_post(); ?>
<h2><?php single_post_title(); ?> </h2>
<p> دسته بندی  : <?php the_category('li='); ?> <br />
تگ ها  :<?php the_tags(''); ?> <br />
تاریخ  :<?php the_time('j F Y'); ?> <br />
مولف   : <a href="<?php the_author_link(); ?>">
<?php the_author(); ?>
</a>  <br />
دیدگاه ها  :<?php comments_popup_link('بدون نظر' , '1 نظر'
, '% نظر'); ?> <br />
</p>
<p> <?php the_content(); ?></p>
<?php comments_template(); ?><hr />
<?php
$args =  array(
'order'  => 'DESC',
'orderby'  => 'date',
'offset'  => 0 ,
'numberposts' => 10  );
$query = new WP_Query( $args );
if ($query->have_posts() ) :
?>
<h2> جدیدترین نوشته ها</h2>
<ul>
<?php
while($query->have_posts() ) :
$query->the_post(); ?>
<li><a href=" <?php the_permalink(); ?>"> <?php the_title(); ?> </a> </li>
<?php
endwhile;
?>
</ul>
<?php
endif;
wp_reset_query();
?></td>
</tr><?php get_footer(); ?>

که خروجی آن بصورت زیر در انتهای صفحه تک نوشته خواهد بود:

کدنویسان-طراحی پوسته وردپرس-نمایش آخرین نوشته ها

در جلسات بعدی کلاس  WP_Query را برای نمایش لیست نوشته ها بر اساس دسته بندی و برچسب ها بصورت کامل بررسی خواهیم کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب