WP_Query

راهنمای کامل wp query

راهنمای کامل wp query

 

<?php
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
 $the_query->the_post();
 echo  get_the_title();
}} else {
 // no posts found
}
wp_reset_postdata();
?>

و یا استفاده از وی پی کوئری همراه با صفحه بندی :

<?php 
$the_query = new WP_Query( $args ); 
if ( $the_query->have_posts() ) : ?>
<!-- pagination here -->

<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php endwhile; ?>
 
<!-- pagination here -->
<?php 
wp_reset_postdata();
else : ?>
Sorry, no posts matched your criteria.
<?php endif; ?>

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

// پست بر اساس آی دی نویسنده
$query = new WP_Query( array( 'author' => 123 ) );

// پست بر اساس نام نویسنده
$query = new WP_Query( array( 'author_name' => 'rami' ) );

// پست های چند نویسنده بر اساس آی دی
$query = new WP_Query( array( 'author' => '2,6,17,38' ) );

// مستثنی کردن پست های چند نویسنده
$query = new WP_Query( array( 'author__not_in' => array( 2, 6 ) ) );

// همه پست ها به غیر از پست های نوشته شده توسط یک نویسنده خاص
$query = new WP_Query( array( 'author' => -12 ) );

کوئری پست بر اساس دسته بندی

// پست های یک دسته بندی خاص ( و زیر دسته های آن )بر اساس آی دی دسته بندی
$query = new WP_Query( array( 'cat' => 4 ) );

// پست های یک دسته بندی و زیر دسته بندی های آن بر اساس نام دسته بندی
$query = new WP_Query( array( 'category_name' => 'wordpress' ) );

// نمایش تمام پست های فقط یک دسته بندی خاص (بدون زیر دسته ها) 
$query = new WP_Query( array( 'category__in' => 4 ) );

// نمایش پست های چند دسته بندی بر حسب آی دی اون دسته بندی ها
$query = new WP_Query( array( 'cat' => '2,6,17,38' ) );

// نمایش پست های چند دسته بندی بر اساس نام دسته بندی ها
$query = new WP_Query( array( 'category_name' => 'staff,news' ) );

// نمایش پست هایی که یکی از دسته بندی های تعیین شده رو داشته باشه
$query = new WP_Query( array( 'category_name' => 'staff+news' ) );

// نمایش همه پست های به غیر از دسته بندی های تعیین شده
$query = new WP_Query( array( 'cat' => '-12,-34,-56' ) );

// نمایش تمام پست هایی که تمام دسته بندی های تعیین شده رو داشته باشه
$query = new WP_Query( array( 'category__and' => array( 2, 6 ) ) );

// نمایش پست هایی که یکی از دسته بندی های تعیین شده رو داشته باشند بدون زیر دسته ها
$query = new WP_Query( array( 'category__in' => array( 2, 6 ) ) );

// مستثنی کردن چند دسته بندی 
$query = new WP_Query( array( 'category__not_in' => array( 2, 6 ) ) );

کوئری و نمایش پست ها بر اساس تگ ( برچسب یا کلمه کلیدی)


// نمایش تمام پست ها بر اساس کلمه کلیدی
$query = new WP_Query( array( 'tag' => 'wordpress' ) );

// نمایش پست ها بر اساس آی دی کلمه کلیدی
$query = new WP_Query( array( 'tag_id' => 13 ) );

// نمایش پست هایی که یکی از برچسب ها رو داشته باشه
$query = new WP_Query( array( 'tag' => 'bread,baking' ) );

// نمایش پست هایی که تمام برچسب های تعیین شده رو داشته باشه 
$query = new WP_Query( array( 'tag' => 'bread+baking+recipe' ) );

// نمایش پست هایی که تمام برچسب هایی که با آی دی رو داشته باشه
$query = new WP_Query( array( 'tag__and' => array( 37, 47 ) ) );

// نمایش پست هایی که یکی از برچسب های با آی دی خاص رو داشته باشه
$query = new WP_Query( array( 'tag__in' => array( 37, 47 ) ) );

// نمایش تمام پست هایی که یکی از تگ های تعیین شده رو نداشته باشه
$query = new WP_Query( array( 'tag__not_in' => array( 37, 47 ) ) )


کوئری بر اساس تاکسونومی

 // نمایش پست ها با پست تایپ  post با تاکسونومی  pepole  با ترم یا تگ bob 
$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'people',
            'field'    => 'slug',
            'terms'    => 'bob',
        ),
    ),
);
$query = new WP_Query( $args );


// نمایش پست با چندین تاکسونومی
$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'movie_genre',
            'field'    => 'slug',
            'terms'    => array( 'action', 'comedy' ),
        ),
        array(
            'taxonomy' => 'actor',
            'field'    => 'term_id',
            'terms'    => array( 103, 115, 206 ),
            'operator' => 'NOT IN',
        ),
    ),
);
 
// نمایش پست با فرمت خاص و  یا با تاکسونومی خاص

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => array( 'quotes' ),
        ),
        array(
            'taxonomy' => 'post_format',
            'field'    => 'slug',
            'terms'    => array( 'post-format-quote' ),
        ),
    ),
);

// نمایش پست های یک دسته بندی خاص  یا نمایش پست هایی با سته بندی خاص همراه با پست تایپ خاص
$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => array( 'quotes' ),
        ),
        array(
                        'relation' => 'AND',
                        array(
                    'taxonomy' => 'post_format',
                    'field'    => 'slug',
                    'terms'    => array( 'post-format-quote' ),
                        ),
                        array(
                                'taxonomy' => 'category',
                                'field'    => 'slug',
                                'terms'    => array( 'wisdom' ),
                        ),
        ),
    ),
);
$query = new WP_Query( $args );

کوئری بر اساس کلمه جستجو

// جستجو و نمایش تمام پست ها بر اساس کلمه وردپرس به غیر از کلمه نیو
$query = new WP_Query( array( 's' => 'wordpress -new' ) );

کوئری برای صفحات و برگه ها

// نمایش پست براساس آی دی 
$query = new WP_Query( array( 'p' => 7 ) );

// نمایش برگه بر اساس آی دی برگه
$query = new WP_Query( array( 'page_id' => 7 ) );

// نمایش پست / برگه  بر اساس نامک یا اسلاگ پست یا برگه
$query = new WP_Query( array( 'name' => 'wordpresskar' ) );

// نمایش برگه بر اساس نام یا همان اسلاگ برگه
$query = new WP_Query( array( 'pagename' => 'contact' ) );

//  نمایش برگه  چایلد بر اساس نام برگه که نام والد توسط علامت / از نام برگه چایلد جدا شده است
$query = new WP_Query( array( 'pagename' => 'contact_us/canada' ) );

// نمایش تمام برگه های فرزند یه برگه والد 
$query = new WP_Query( array( 'post_parent' => 93 ) );

// نمایش برگه های والد بدون نمایش برگه های فرزند
$query = new WP_Query( array( 'post_parent' => 0 ) );

//نمایش برگه های والد دارای آی دی تعیین شده 
$query = new WP_Query( array( 'post_parent__in' => array( 2, 5, 12, 14, 20 ) ) );

// نمایش فقط برگه های خاص تعیین شده توسط آی دی
$query = new WP_Query( array( 'post_type' => 'page', 'post__in' => array( 2, 5, 12, 14, 20 ) ) );

// نمایش همه پست ها به غیر از پست هایی تعیین شده بوسیله آی دی
// Note: you cannot combine post__in and post__not_in in the same query.
$query = new WP_Query( array( 'post_type' => 'post', 'post__not_in' => array( 2, 5, 12, 14, 20 ) ) );
  
// or

$exclude_ids = array( 1, 2, 3 );
$query = new WP_Query( array( 'post__not_in' => $exclude_ids ) );

نمایش پست ها بر اساس پست تایپ

// نمایش پست ها با پست تایپ برگه
$query = new WP_Query( array( 'post_type' => 'page' ) );

//  نمایش تمام پست ها با پست تایپ های مختلف به غیر از پیش نویس ها
$query = new WP_Query( array( 'post_type' => 'page' ) );

// نمایش پست ها با پست تایپ های مختلف تعیین شده
$args = array(
    'post_type' => array( 'post', 'page', 'movie', 'book' )
);
$query = new WP_Query( $args );

نمایش پست بر اساس وضعیت انتشار

// publish, pending, draft, auto-draft, future, private, inherit, trash, any 
// any except for ‘inherit’, ‘trash’ and ‘auto-draft’.

// نمایش پست های منتشر شده 
$query = new WP_Query( array( 'post_status' => 'publish' ) );

// نمایش پست ها با چند نوع وضعیت
$args = array(
    'post_status' => array( 'pending', 'draft', 'future' )
);
$query = new WP_Query( $args );

// نمایش تمام ضمیمه ها 
$args = array(
    'post_status' => 'any',
    'post_type'   => 'attachment'
);
$query = new WP_Query( $args );



نمایش پست بر اساس تعداد کامنت

// نمایش پست هایی که 20 کامنت دارند
$args = array(
    'post_type' => 'post',
    'comment_count' => 20,
    )
);
$query = new WP_Query( $args );

// نمایش پست هایی که تعداد  20 تا یا بیشتر کامنت دارند
$args = array(
    'post_type' => 'post',
    'comment_count' => array(
        'value' => 25,
        'compare' => '>=',
    )
);
$query = new WP_Query( $args );


پارامتر های صفحه بندی در وی پی کوئری

// نمایش 3 پست در هر صفحه
$query = new WP_Query( array( 'posts_per_page' => 3 ) );

// نمایش تمام پست ها در یک صفحه
$query = new WP_Query( array( 'posts_per_page' => -1 ) );

// نمایش تمام پست ها با غیرفعال کردن صفحه بندی
$query = new WP_Query( array( 'nopaging' => true ) );

// نمایش پست ها بعد از درنظر نگرفتن 3 پست اول
$query = new WP_Query( array( 'offset' => 3 ) );

// نمایش پست ها از صفحه 6
$query = new WP_Query( array( 'paged' => 6 ) );

// نمایش پست ها از صفحه فعلی
$query = new WP_Query( array( 'paged' => get_query_var( 'paged' ) ) );

// نمایش پست های صفحه فعلی و اگر مقدار نداشته باشد نمایش پست های صفحه اول
//Pagination Note: Use get_query_var('page'); if you want your query to work in a page template that you’ve set as your static front page. The query variable ‘page’ also holds the pagenumber for a single paginated Post or Page that includes the <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-more="nextpage" class="wp-more-tag mce-wp-nextpage" alt="" title="جداکننده صفحه" data-mce-resize="false" data-mce-placeholder="1" /> quicktag in the post content.

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$query = new WP_Query( array( 'paged' => $paged ) );

// Display posts from current page on a static front page:
$paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
$query = new WP_Query( array( 'paged' => $paged ) );

// نمایش اولین پست استیکی
$sticky = get_option( 'sticky_posts' );
$query = new WP_Query( array( 'p' => $sticky[0] ) );

// نمایش اولین پست استیکی در صورت وجود، در غیر اینصورت نمایش آخرین پست منتشر شده
$args = array(
    'posts_per_page'      => 1,
    'post__in'            => get_option( 'sticky_posts' ),
    'ignore_sticky_posts' => 1,
);
$query = new WP_Query( $args );

// نمایش فقط اولین پست استیکی اگر وجود نداشت بدون خروجی
$sticky = get_option( 'sticky_posts' );
$args = array(
    'posts_per_page'      => 1,
    'post__in'            => $sticky,
    'ignore_sticky_posts' => 1,
);
$query = new WP_Query( $args );
if ( $sticky[0] ) {
    // insert here your stuff...
}

// مستنثنی کردن تمام پست های استیکی
$query = new WP_Query( array( 'post__not_in' => get_option( 'sticky_posts' ) ) );


// نمایش پست های دسته بندی خاص ،پست های استیکی دیگر بالاتر قرار نمی گیرند و در جای اصلی خودشون نمایش داده میشن
$query = new WP_Query( array( 'ignore_sticky_posts' => 1, 'posts_per_page' => 3, 'cat' => 6 );

// نمایش پست های یک دسته بندی خاص بدون در نظر گرفتن و نمایش پست های استیکی با صفحه بندی
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$sticky = get_option( 'sticky_posts' );
$args = array(
    'cat'                 => 3,
    'ignore_sticky_posts' => 1,
    'post__not_in'        => $sticky,
    'paged'               => $paged,
);
$query = new WP_Query( $args );


Order & Orderby Parameters

ترتیب پست های نمایش داده شده در وی پی کوئری

order : مرتب کردن

ASC : صعودی ( از کم به زیاد )  – ascending

DESC :  نزولی  ( از زیاد به کم )- descending

 

orderby :  مرتب کردن بر اساس یک پارامتر

  • در حالت عادی بر اساس تاریخ پست انجام می شود
  • none :  بدون پارامتر
  • ID : بر اساس ای دی پست
  • author : بر اساس  نویسنده پست
  • title : بر اساس عنوان پست
  • name : بر اساس نامک یا همون اسلاگ پست
  • type : بر اساس پست تایپ
  • date : بر اساس تاریخ
  • modified : بر اساس آخرین تغییرات اعمال شده
  • parent : بر اساس آی دی پست/برگه والد
  • rand : ترتیب تصادفی
  • comment_count : بر اساس تعداد کامنت
  • relevance :  بر اساس ارتباط و مطابقت با عبارت جستجو شده به اینصورت که ابتدا کل و دقیقا  عبارت در عنوان پست باشد، قسمتی از عبارت در عنوان باشد ، عبارت در عنوان آمده باشد و در آخر عبارت در محتوا وجود داشته باشد.
  • menu_order : برای برگه ها و ضمیمه ها
  • meta_value : بر اساس مقدار یک متای پست . حتما در کوئری باید نام متا هم مشخص باشه و از این meta_key=keyname هم استفاده بشه . نتایج به صورت الفبایی مرتب خواهند شد . اما ممکنه نتایج دور از انتظاری در ترتیب وجود داشته باشه مثلا 1, 3, 34, 4, 56,   6 برای همین بهتر هست از meta_value_num استفاده بشه. همینطور اگر مقدار متا عددی نباشه باید توسط meta_type نوع اون مشخص بشه تا در موقع مرتب کردن با مشکل مواجه نشه.
  • meta_value_num :  ترتیب مقدار متای عدد حتما باید meta_key=keyname تعریف بشه
  • meta_type : میشه یکی از موارد ‘NUMERIC’, ‘BINARY’, ‘CHAR’, ‘DATE’, ‘DATETIME’, ‘DECIMAL’, ‘SIGNED’, ‘TIME’, ‘UNSIGNED’ رو به عنوان نوع متای پست انتخاب کرد تا مرتب کردن بر اساس اون انجام بشه. همینطور میشه از meta_value_* استفاده کرد که به جای * نوع متا رو میشه به کار برد مثلا meta_value_datetime که مقدار متای پست که نوع اون زمان باشه
  • post__in : بر اساس آی دی های تعریف شده
  • post_name__in : بر اساس نامک و یا اسلاگ پست های تعریف شده
  • post_parent__in : بر اساس نامک و یا اسلاگ پست های والد تعریف شده

 

 

// مرتب کردن نزولی پست ها بر اساس عنوان پست
$args = array(
    'orderby' => 'title',
    'order'   => 'DESC',
);
$query = new WP_Query( $args );
// Display posts sorted by ‘menu_order’ with a fallback to post ‘title’, in a descending order:
$args = array(
    'orderby' => 'menu_order title',
    'order'   => 'DESC',
);
$query = new WP_Query( $args );

// پست های تصادفی
$args = array(
    'orderby'        => 'rand',
    'posts_per_page' => '1',
 
);
$query = new WP_Query( $args );
// مرتب کردن پست ها بر اساس تعداد کامنت ها
// قابل استفاده برای  ایجاد لیست پر بحث ترین پست ها
$args = array(
    'orderby' => 'comment_count'
);
$query = new WP_Query( $args );
// مرتب کردن پست ها با نوع محصول و  متای قیمت 
$args = array(
    'post_type' => 'product',
    'orderby'   => 'meta_value_num',
    'meta_key'  => 'price',
);
$query = new WP_Query( $args );
// مرتب کردن برگه ها بر اساس عنوان و منو اوردر
$args = array(
    'post_type' => 'page',
    'orderby'   => 'title menu_order',
    'order'     => 'ASC',
);
$query = new WP_Query( $args );
// Display pages ordered by ‘title’ and ‘menu_order’ with different sort orders (ASC/DESC) (available since version 4.0):
$args = array(
    'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' )
);
$query = new WP_Query( $args );

// مرنب کردن با پارامتر های چندگانه
$args = array(
    'orderby'  => array( 'meta_value_num' => 'DESC', 'title' => 'ASC' ),
    'meta_key' => 'age'
);
$query = new WP_Query( $args );

// نمایش و مرتب کردن صعودی  پست تایپ خاص با متای سن و  محدود کردن مقدار به مقدار  3 و 4 
$args = array(
    'post_type'  => 'my_custom_post_type',
    'meta_key'   => 'age',
    'orderby'    => 'meta_value_num',
    'order'      => 'ASC',
    'meta_query' => array(
        array(
            'key'     => 'age',
            'value'   => array( 3, 4 ),
            'compare' => 'IN',
        ),
    ),
);
$query = new WP_Query( $args );
// مرتب و محدود کردن پست ها بوسیله دو متای متفاوت 
$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => array( 
        'city_clause' => 'ASC',
        'state_clause' => 'DESC',
    ),
) );
  1. اولین نفری باشید که دیدگاه خود را ثبت می کند!
  1. No trackbacks yet.
« اضافه کردن فیلد جدید در پروفایل کاربری وردپرس
رابط کاربری User Interface و رضایت کاربران »