شیء 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 های وردپرس مقاله ای منتشر کردیم از این قسمت هم میتونید استفاده کنید.

  خطای Too Many Redirects در وردپرس + راه حل رفع آن

خب تا اینجا بیشتر پارامترهای مهم تابع 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(); ?>

            

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

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

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

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