درخواست ارسال نوشته و برگه با wp_query وردپرس

با عرض سلام خدمت همراهان همیار وردپرس؛
در این مقاله به بررسی wp_query وردپرس می پردازیم، که یکی از بخش های مهم در وردپرس است. شما دوستان به صورت کلی با این بخش آشنا می شوید!
در ابتدا یک تعریف کلی از وردپرس کوئری برای شما ارائه می دهیم. در این تعریف مکان قرار گیری این کلاس در فایل های وردپرس را مشخص می کنیم.

wp_query وردپرس چیست؟

wp_query وردپرس یک کلاس در وردپرس است، که در فایل wp-includes/query.php تعریف می شود. همچنین یک قابلیت پیچیده در مطالب و صفحات است که وب سایت وردپرس به آن نیاز دارد.
wp_query وردپرس، کوئری های موردنیاز را تعیین می کند. از دیگر وظایف wp_query وردپرس مرتب سازی مطالب منتشر شده بر اساس بازه زمانی، تعداد نظرات و… است.
همچنین نوشته های درخواستی را بازخوانی می کند و اطلاعات مورد نیاز را در بازه زمانی طولانی حفظ می کند.

تعامل با wp_query وردپرس

در بیشتر مواقع با کمک wp_query وردپرس می توانید اطاعات مورد نیازتان را به راحتی بدست آوید. بدون اینکه با کلاس های داخلی و متغیر های جهانی درگیر شوید!
در wp_query وردپرس یک دسته کامل از توابعی وجود دارد. شما می توانید با فراخوانی هر تابعی، اطلاعات مورد نیازتان را بدست آورید.
دو سناریوی اصلی برای استفاده از wp_query وردپرس وجود دارد. این سناریوها به صورت زیر است:

سناریوی اول:

اولین مورد این است که بفهمیم کدام یک از درخواست های وردپرس در حال حاضر مورد نیاز است. ویژگی های $ و _* برای نگهداری اطلاعات، طراحی شده اند. استفاده از این برچسب ها مشروط به تعامل است.

توجه!!! اولین مورد یک سناریوی مرسوم برای نویسندگان افزونه است.

سناریوی دوم:

دومین مورد در طول اجرای حلقه است. wp_query وردپرس از توابع متعددی برای کارهای عادی  درون حلقه استفاده می کند. به عنوان نمونه:

برای شروع از تابع ()have_posts استفاده می کند، که به صورت () wp_query->have_posts$ فراخوانی می شود. وقتی این تابع فراخوانی شد، بررسی می کند مطلبی برای نمایش وجود دارد یانه.

اگر مطلبی وجود داشت یک حلقه while با شرط () have_posts  ایجاد می شود. این فرآیند دائما برای نمایش مطلب تکرار می شود. در هر فرآیند تابع () the_post که () wp_query->have_posts$ را فراخوانی می کند، از متغیرهای داخلی با wp_query$  و متغیرهای جهانی  post$ استفاده می نماید.

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

نمونه استانداردی از حلقه wp_query وردپرس به صورت زیر است:


<?php

// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
/* Restore original Post Data */
wp_reset_postdata();
} else {
// no posts found
}

اگر شما کوئری های چندگانه داشته باشید، نیاز به ایجاد حلقه های چند گانه دارید. نمونه ای از حلقه چندگانه wp_query وردپرس به صورت زیر است:


<?php

// The Query
$query1 = new WP_Query( $args );

if ( $query1->have_posts() ) {
// The Loop
while ( $query1->have_posts() ) {
$query1->the_post();
echo '<li>' . get_the_title() . '</li>';
}

/* Restore original Post Data
* NB: Because we are using new WP_Query we aren't stomping on the
* original $wp_query and it does not need to be reset with
* wp_reset_query(). We just need to set the post data back up with
* wp_reset_postdata().
*/
wp_reset_postdata();
}

/* The 2nd Query (without global var) */
$query2 = new WP_Query( $args2 );

if ( $query2->have_posts() ) {
// The 2nd Loop
while ( $query2->have_posts() ) {
$query2->the_post();
echo '<li>' . get_the_title( $query2->post->ID ) . '</li>';
}

// Restore original Post Data
wp_reset_postdata();
}

?>

متدها و خواص

این موارد، اسناد رسمی از wp_query وردپرس هستند. شما نباید خواص را مستقیما تغییر دهید، اما به جای استفاده از متدها به تعامل با آنها بپردازید.
در ادامه مطلب به معرفی بعضی از متدها و خواص می پردازیم:

خواص

query$: برای نگهداری رشته هایی که در کلاس وردپرس تصویب شده اند.
query_vars$: آرایه ای شرکت پذیر که شامل کوئری query$ است.
queried_object$: قابل اجرا در صورت درخواست اطلاعات نویسنده ، دسته بندی ، پیوند یکتا یا برگه است. در واقع اطلاعات این موارد را هم نگهداری می کند.
queried_object_id$: این مورد، آیدی اطلاعات نویسنده ، دسته بندی ، پیوند یکتا یا برگه را نگهداری می کند.
post_count$: تعیین تعدا مطالب
found_posts$: تعیین تعداد کل نوشته های مطابق با پارامتر کوئری مورد نظر
max_num_pages$: تعداد کل صفحات را تعیین می کند.

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

توجه!!! وجود یک علامت & قبل از نام متد نشان دهنده مرجع بازگردانی آن است.

init(): مقدار دهی اولیه به شی، مجموعه تمام خواص تهی و…
parse_query_vars(): برای عدم تجزیه رشته های کوئری قدیمی
get) $query_var ): نام گذاری متغیرهای کوئری
set) $query_var, $value ): انتخاب یک متغییر کوئری با نام مشخص برای تفکیک مقادیر
query) $query )&: با فراخوانی () parse_query و () get_posts ، نتایج به تابع () get_posts باز گردانی می شود.

دوستان متدهای دیگری هم در wp_query وردپرس وجود دارد. در این بخش به تعدادی از آنها اشاره کردیم.

نتیجه گیری

شما در این مطلب کلاس wp_query وردپرس آشنا شدید. می توانید از متدها و خواص آن در حلقه های وردپرس استفاده کنید. به عنوان نمونه می توانید مطالب مورد نظر خود را ارسال یا فراخوانی کنید. برا اینکه در این زمینه حرفه ای تر شوید، نیاز به آشنایی بیشتری با wp_query وردپرس دارید!.

موفق و سربلند باشید…

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

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

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

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

  1. 4 سال عضو همیار وردپرس

    خسته نباشید . ممنون از مطلب کاملتون
    من میخواستم بدونم برای اینکه فیلد هایی که به عنوان ویژگی برای یک پست با Acf ساختیم رو چطوری میتونم به فیلترهای همون پست تبدیل کنم.
    مثلا من یک فیلد ساختم به عنوان دسته بندی اصلی ؛ من میخوام این دسته بندی اصلی جایگزین فیلد “دسته بندی ” خود وردپرس بشه یا دسته بندی اصلی جزو یکی از ویزگی های پست باشه که بتونم با این فیلتر نمایش بدم پست رو .
    باید از همین قسمت تغییرات رو اعمال کنم ؟

  2. متشکرم بسیار عالی بود

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

    با عرض سلام و ادب
    خواستم تشکر کنم بابت زحمتی که بابت مقاله کشیدید. یک نقد کوچک هم داشتم، متاسفانه به نظر میاد که این متن از یک متن زبان اصلی ترجمه شده اما به دلیل آشنایی نداشتن با اصلاحات کامپیوتری، از کلماتی استفاده شده که مناسب نیستند: مثلا متغیر های جهانی (فکر می کنم منظور شما global variable می باشد که در رشته کامپیوتر با ترجمه متغیرهای سراسری شناخته می شود) یا مثلا در جمله “$query: برای نگهداری رشته هایی که در کلاس وردپرس تصویب شده اند” (اصولا از کلمه تخصیص داده شدن برای یک متغیر استفاده می شود، فکر می کنم در متن اصلی از فعل assign یا مشابه آن استفاده شده) و مواردی دیگر. به عنوان یک سایت خوب و مرجع در زمینه وردپرس، این به نوعی نقص بسیار بزرگ محسوب می شود که در مقاله ترجمه شده از اصطلاحات رایج استفاده نشود (یاد زمانی افتادم که سال ها پیش مترجمانی که رشته آن ها کامپیوتر نبود و آشنایی هم با کامپیوتر نداشتند، کتاب های کامپیوتری را ترجمه و چاپ می کردند. واقعا فاجعه بود) مسلما وجود یک چنین مقالاتی نه تنها باعث بالا رفتن بازدید شما نخواهد شد، بلکه درصد مراجعه به شما را به دلیل ناکارآمد بودن خواهد کاست. ضمن اینکه متن دارای غلط املایی نیز می باشد. از طرف دیگر بهتر است وقتی از یک متن بصورت مستقیم استفاده می شود، لااقل نام منبع یا لینک اصلی آن درج شود. این نه تنها باعث کم شدن ارزش کار شما نمی شود بلکه باعث می شود که بازدید کنندگان اعتبار بیشتری برای شما قائل گردند.
    به هرحال بازهم ممنون بابت زحماتی که می کشید، فقط یک نقد بود. امیدوارم همچنان قدرتمند به کار خود ادامه دهید