شیء query_posts قسمت دوم

خب این قسمت دوم مقاله هست و حتما قبل از خوندنش قسمت اول رو مطالعه کنید.

مورد بعدی پارامتر نویسنده هست، یعنی میتونید کاری کنید که فقط مطالب یک نویسنده خاص رو نشون بدید، این پارامتر دقیقا مثل مثل پارامتر دسته استفاده میشه یعنی اگر بخواهید فقط 5 مطلب آخر نویسنده ای که آی دیش 2 هست رو نشون بدید، باید از پست کوئری زیر استفاده کنید:

<?php
query_posts('author=2&posts_per_page=5'); ?>

مورد بعدی پارامتر برچسب هست، یعنی میتونید که فقط مطالبی که دارای برچسبی خاص هستند رو نشون بدید، خب برای برچسب میتونیم فقط از اسمش استفاده کنیم، یعنی برای نمایش 5 مطلب آخری که همگی دارای برچسب مثلا slider هستند از کد زیر باید استفاده کنید:

<?php
query_posts('tag=slider&posts_per_page=5'); ?>

مورد بعدی پارامتر آی دی نوشته هست، این حالت زیاد به کار نمیاد ولی مثلا در یکی از مطالب قبلی همیار گفته شد که چطوری با آی دی نوشته متن اونو به نمایش بگذاریم اینجا می تونید با آی دی نوشته تمام اطلاعات اون نوشته رو استفاده کنید، برای محدود کردن کوئری به آی دی نوشته ای مثلا 6 باید از کد زیر استفاده کنید:

<?php
query_posts('p=5'); ?>

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

بگذارید با یک مثال این پارامتر رو توضیح بدیم: فرض کنید شما یک سایت مجله آنلاین دارید که سایتتون 5 دسته کلی داره و توی صفحه اصلی سایت 5 تا باکس درست کرده اید و توی هر باکس آخرین مطالب اون دسته رو نشون میدید، حالا شاید بخواهید که مطالب اول هر باکس رو کمی شاخص تر از مطالب دیگه کنید، من توی بعضی از سایت های فارسی دیدم این کارو کردند اما یک مشکل کوچیک داشته اند. برای اینکه ما همچین قابلیتی در بیاریم میتونیم داخل اون باکس برای مطلب اول یک پست کوئری تعیین کنیم و بگیم فقط یک مطلب نشون داده بشه، سپس برای بقیه مطالب یک کوئری دیگه تعیین میکنیم و میگیم که آخرین مطالب این دسته رو نشون بده و همچنین اولین مطلب (آخرین مطلب) رو نشون نده، که با آفست میشه این کارو کرد، مشکل کوچیک سایت های فارسی هم که میگفتم این بود که اونها به درستی دو تا کوئری رو در داخل باکس درست کرده بودند اما قسمتی که مطالب دیگر رو نشون میداد اولین مطلب که یکم شاخصتر بود رو هم نشون می داد، خب اگر بخواهید از پارامتر آفست استفاده کنید باید از کد زیر استفاده کنید:

<?php
query_posts('offset=1'); ?>

خب این پارامتر با توجه به مقدار داده شده (اینجا یک هست) از آخرین مطالب محروم میکنه.

پارامتر بعدی order هست، order فقط دو تا مقدار میتونه بگیره یا ASC و یا DESC .

توی حالت عادی وردپرس توی حلقه آخرین مطالب رو در بالاترین قسمت قرار میده یا به عبارت دیگه ترتیب بندیش به صورت زمان قدیم به جدید هست که توی این حالت DESC هست حالا اگر بخواهید برعکس مطالب به صورت جدید به قدیم چیده بشه یعنی هرچی مطلب جدید پست میکنید توی پایین ترین قسمت قرار بگیره باید مقدار order برابر با ASC بشه یعنی به صورت زیر:

<?php
query_posts( array('order' => 'ASC' ) ); ?>

خب پارامتر بعدی orderby هست، اینپارامتر تعیین میکنه که پست ها بر چه اساس چیده بشند که دو تا مقدار مهم داره اولی rand (تصادفی)و دومی comment_count هست.

خب فکر کنم یه حدس هایی زده باشید، بله درسته، بیشتر جاها مطالب محبوب و مطالب تصادفی رو براساس این پارامتر میچینند خب به تربیت برای نمایش مطالب محبوب (براساس تعداد نظرات) و مطالب تصادفی از کدهای زیر استفاده میشه:

<?php
query_posts( array('orderby' => 'comment_count' ) ); ?>
<?php query_posts(
array('orderby' => 'rand' ) ); ?>

پارامتر بعدی نوع نوشته هست، خب قبل از خوندن این قسمت باید با custom post type های وردپرس آشنایی داشته باشید تا بتونید از این قسمت استفاده کنید. وردپرس دو تا قابلیت خیلی مفید داره اونم Custom post type و Taxonomy ها هستند که سعی میکنم یک مقاله هم در مورد این دو بنویسم. پست ها هم نوعی Custom Post Type هستند و از نوع post هستند، خب فرض کنید شما یک وب سایت دارید که این وب سایت دارای یک قسمت فروشگاه نیز هست و برای قسمت فروشگاه از Custom Post Type ها استفاده شده و slug قسمت فروشگاه shop هست. (این قسمت
پیچیده نیست نیاز به درک کامل Custom Post Type ها داره) حالا اگر بخواهید کوئری پست رو به مطالب فروشگاه محدود کنید باید از کد زیر استفاده کنید. (یعنی اگر بخواهید فقط مطالب یک Custom Post Type خاص رو نشون بدید) :

<?php
query_posts( array('post_type' => 'shop' ) ); ?>

البته در کد بالا اگر به جای shop بنویسید post آخرین مطالب به نمایش در می آیند چون پست ها هم نوعی Custom Post Type و از نوع post هستند.
حالا اگر بخواهیم کمی در مورد Taxonomy ها بگیم، باید گفت که دسته ها و برچسب ها Taxonomy های پست ها هستند، بگذارید یک مثال بزنیم، توی حالت قبلی گفتیم ما یک Custom Post Type به اسم shop داریم حالا این فروشگاه ما در محصولاتی هست از نوع دانلودی، محصولات دیجیتالی، محصولات لوازم خانگی و از این قبیل حالا اگر برای محصولات فروشگاه ما یک Taxonomy درست کرده باشیم، با slug به اسم product_type و برای هر محصول هر یک مقدار ذخیره کرده ایم، مثلا برای محصولات دانلودی downloads گذاشتیم، حالا اگر بخواهیم آخرین محصولات فروشگاه و اونهایی که نوعشون محصولات دانلودی هست باید از کد زیر استفاده کنیم:

<?php
query_posts( array('post_type' => 'shop', 'product_type' => 'downloads' )
); ?>

البته باز هم میگم قسمت Taxonomy های وردپرس کمی ناشناخته هستند، این قسمت از مقاله رو علامت بگذارید و بعد از این که در مورد Custom Post Type ها و Taxonomy های وردپرس مقاله ای منتشر کردیم از این قسمت هم میتونید استفاده کنید.

  چگونه پست ها با بیشترین دیدگاه در وردپرس را  نمایش دهیم؟

خب تا اینجا بیشتر پارامترهای مهم تابع query_post گفته شد، بگذارید چند مثال عملی هم انجام بدهیم، تا شاید اگر جایی مشکلی داشتید برطرف شود.

حب ابتدا می خواهیم مطالب تصادفی رو در وردپرس به نمایش در بیاریم، ابتدا به کد زیر نگاهی بیندازید تا بعدش توضیح بدم:


            <?php query_posts( array('orderby' => 'rand',
'post_per_page' => 5 ) ); ?>

            <ul>

            <?php while (have_posts()) : the_post(); ?>   

                        <li><a href="<?php the_permalink();
?>"><?php the_title(); ?></a></li><br>

            <?php endwhile; ?>

            </ul>

            <?php wp_reset_query(); ?>

            

خب توی کوئری پست گفته ایم که ترتیب بندیش به صورت Random یا تصادفی باشه همچنین گفته ایم که 5 تا مطلب نشون بده که بسته به نیازتون میتونید تغییرش بدید.

با این مثال می خواهیم مطالب محبوب براساس تعداد نظرات به نمایش بگذاریم:


            <?php query_posts( array('orderby' => 'comment_count',
'post_per_page' => 5 ) ); ?>

            <ul>

            <?php while (have_posts()) : the_post(); ?>   

                        <li><a href="<?php the_permalink();
?>"><?php the_title(); ?></a></li><br>

            <?php endwhile; ?>

            </ul>

            <?php wp_reset_query(); ?>

            

خب توی کد بالا هم گفته ایم که ترتیب بندیش براساس تعداد نظرات باشه.

آیا این مقاله برای شما مفید بود؟
تقریبا
خیر

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

ارسال دیدگاه به معنی این است که شما ابتدا قوانین ارسال دیدگاه را مطالعه کرده‌اید و با آن موافق هستید.

دیدگاه‌های این نوشته جدید ترین ها شاخص

  1. با سلام یه سوال داشتم نمیدونستم کجا عنوان کنم از طریق سرچ به این صفحه رسیدم اگه راهنمایی کنید ممنون میشم :

    من تو ساختار html دو سطر دارم با کلاس های متفاوت که هر سطر سه ستون داره به شکل زیر :

    من میخوام 3 تا div اول که کلاس col-md-4 داره بیفته داخل div با کلاس row mt-lg و این کلاس بسته شه و بعد 3 تا div بعدی بازهم با کلاس col-md-4 این دفعه بیفته تو div بعدی که کلاس row mt-md mb-xl داره

    اینارو به این شکل داخل حلقه قرار دادم :

    حالا مشکلم اینه که هر 6 تا div با کلاس col-md-4 میفته داخل div با کلاس row mt-lg در صورتی که من میخوام سه تای اول بیفته تو div با کلاس row mt-lg و سه تا بعدی بیفته داخل div با کلاس row mt-md mb-x1

  2. سلام
    من دنبال یک افزونه (یا هر چیز دیگه ای) برای نمایش تصادفی مطالب در صفحه خانگی وردپرس هستم
    یعنی به جای اینکه در صفحه خانگی سایت، یک برگه یکتا یا آخرین مطلب رو نشون بده، بطور تصادفی مطالب مختف سایت رو نشون بده که دیگه صفحه خانگی سایت تکراری نباشه

    • درود
      من دنبال یک افزونه (یا هر چیز دیگه ای) برای نمایش تصادفی مطالب در صفحه خانگی وردپرس هستم
      یعنی به جای اینکه در صفحه خانگی سایت وردپرسی، یک برگه یکتا یا آخرین مطلب رو نشون بده، بطور تصادفی مطالب مختلف سایت رو نشون بده که دیگه صفحه خانگی سایت تکراری نباشه

      میخوام مطلبی که در صفحه خانگی سایت نمایش داده میشه بطور تصادفی از بین همه مطالب سایت انختاب و نشون داده بشه
      (نه اینکه یکسری مطلب رو بطور تصادفی لیست کنه. این میشه لیست تصادفی مطالب که با ابزارک هم قابل انجامه)
      میخوام هر بار که یک کاربر وارد سایت میشه یک مطلب متفاوت با دفعه پیش رو بهش نشون بده
      چون خود وردپرس بطور یکنواخت همیشه آخری مطلب رو نشون میده که این برای سایت هایی که هر روز ملب نمیگذارن خیلی بده چون صفحه خانگی مدام تکراریه

      با سپاس

  3. 9 سال عضو همیار وردپرس

    سلام خسته نباشید تشکر برای سایت خوبتون
    یه سوال داشتم خواهشن جواب بدید که کارم خیلی گیره
    من یه سایتی دارم که نمیخوام توی صفحه ایندکس مطالب نشون داده بشه
    بنابراین یه صفحه ای ساختم با نام blog و با این دستور

    قالبش رو برای وردپرس شناختم
    و برای این که مطالبم رو بتونم تو این صفحه نمایش بدم از این کویری استفاده کردم
    ۵ , ‘offset’ => 0,’post_status’=>’publish’ , ‘cat’=>’-4′ ));
    foreach($myposts as $post) :
    setup_postdata($post); ?>
    ————————-

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

  4. سلام بر همیار وردپرس 🙂
    دو تا سوال!
    یک . برای خاصیت query میشه فرمولی نوشت که زیر موضوعات موضوع مورد نظر رو نمایش بده؟
    دو . برای خاصیت query میشه فرمولی نوشت که متن پست آخرین نوشته ی موضوع مورد نظر رو نمایش بده؟
    مثال : فرض کنید برای موضوع وردپرس پستی با عنوان ابزارک می نویسیم! بعد توسط query در قسمتی از قالب نمایش داده بشه!
    فقط اگه شد بر مبنای این یکی توضیح بدید! بقیش سخته!