تعداد بازدید: 264

query_vars در وردپرس

در این مقاله قصد داریم تا در رابطه با query_vars یا همان متغیر های نهان در url صحبت کنیم.اگر شما از ساختار ساده در permalink استفاده کنید به طور مثال https://gnutec.net/?p=123 می تونید query_vars رو در اون ها ببینید مثلا همین p که نشون دهنده پست جاری است. یا زمانی که جستجو در وب سایت اتفاق می افته شما در لینکتون متغیر s رو دارید که اون هم یک query_vars است که نشون دهنده کلید جستجو شده در وب سایت هست.https://gnutec.net/?s=abolfazl این یک نمونه از لینک جستجو در وردپرس است.

خوب حالا اگر از ساختار clean در permalink هامون استفاده کنیم دیگه به صورت مستقیم این query_vars رو نمی تونیم ببینیم اما کماکان query_vars ها موجود هستند و ما می تونیم با استفاده از لینک ها به اون ها دسترسی داشته باشیم.

پس به صورت کلی پارامتر هایی که به صورت POST و یا GET و در لینک ما موجود هست رو query_vars می گیم.

دقت داشته باشید که ما با استفاده از query_vars می تونیم به سرور درخواست بدیم و محتوای وب سایت رو ببینیم . نام این public_query_vars هستش که در زمان ساخت پست تایپ هم به اون اشاره شد که اگر برابر true قرار می گرفت query_vars مربوط به اون در لیست public_query_vars قرار می گرفت و ما می تونستیم از طریق url به محتوای پست تایپ دسترسی داشته باشیم.

پس ما می تونیم task هایی رو با توجه به متغیر های موجود در url به اجرا در بیاریم.

یه سری query_vars در وردپرس به صورت رزرو شده هستند که ما با استفاده از اون ها می تونیم به محتوای وب سایت دسترسی داشته باشیم. هر چه که غیر از این موارد توسط ما به اون اضافه میشه custome_query_vars است که برای افزودن custom_query_vars ما راه های متفاوتی داریم که یکی از اون ها افزودن query_vars با فیلتر query_var است.

query_var ها یکی method از متغیر سراسری $wp_query می باشند . اگر شما این اجزای این شی رو پرینت بگیرید می تونید query_var های اون رو ببینید.

نکته : متغیر سراسری $wp_query  یک شی ساخته شده از کلاس WP_Query هست که با توجه به مکانی که فراخوانی میشه می تونه مقادیر مختلفی داشته باشه به طور مثال اگر در صفحه single.php فراخوانی بشه شی پست جاری هست.

نمایش query_vars در وردپرس با استفاده از $wp_query

query_var ها رو می تونید در لینک مشاهده کنید. به طور مثال http://example.com?p=1 اما اگر از ساختار های منظم لینک ها مثل %postname% استفاده کنید دیگه query_var ها برای شما قابل مشاهده نخواهند بود(ولی هنوز موجود هستند و قابلیت خودشون برای نمایش محتوا رو دارند). وردپرس برای حل این مشکل فیلتری رو به شما ارائه میده که می تونید query_var های دلخواه خودتون رو به لیست query_var های موجود اضافه کنید.

افزودن query_vars با فیلتر query_var

خوب بعد از اضافه کردن کد بالا به پلاگین یا پوسته مون اگه در لینک ما متغیری با نام department یا location وجود داشته باشه اون رو به همراه مقدارش به عنوان یک query_var در وب سایت ما میشناسه.

راه دیگری که میشه این query_var ها رو تعیین و بدست آورد استفاده از تابع add_rewrite_rule است که یه قانون درست می کنه که اگر لینک به شکل خاص اومد query_var ما رو بشناسونه و مقدار دهی کنه ، که این مورد در جلسه بررسی rewrite API در وردپرس کاملا بررسی می شه.

نکته مهم : با اعمال فیلتر بالا اگر query_var ها رو نمایش بگیرید نمی تونید مواردی که اضافه کردید رو ببینید و تنها در صورتی موارد بالا (department , location) رو می تونید ببینید که یا در لینک پارامتری از نوع GET و هم نام با query_var داشته باشید یا با استفاده از تابع add_rewrite_rule این پارامتر رو هم نام با query_var مقدار دهی کرده باشید.

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

 

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

set_query_var

همینطور که می بینید این تابع از دو قسمت var , value تشگیل شده که همون متغیر و مقدار متغیر هست که می تونید اون ها رو در زمان لازم set کنید.

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

get_query_var

این تابع برای گرفتن public_query_var از مقادیر شی متغیر سراسری $wp_query  است . به عبارت دیگه این تابع مقدار query_var رو با توجه به var میگیره .

var همون نام query_var هست و متغیر default مقداری هست که اگر اون متغیر set نشده بود برمی گردونه.

به طور مثال به وسیله این تابع می تونید صفحه pagination رو بگیرید:

add_query_arg

 

این تابع یه راه ساده رو برای افزودن query_var رو به هر URL رو فراهم می کنه . این تابع سه پارامتر می گیره:‌

  • name : نام متغیر که به عنوان query_var قراره به url اضافه بشه.
  • value : مقدار متغیری که در پارامتر بالا تعیین کردیم.
  • URL : لینکی که قراره متغیر هایی که گفتیم به اون متصل بشن . به طور پیش فرض لینک صفحه جاری است.

به طور مثال اگر شما بخواهید لینک http://example.com/?view=list رو داشته داشته باشید.میتونید تابع زیر در وردپرس استفاده کنید.

راه دوم استفاده از تابع add_query_args هست که می تونید به شکل زیر از اون استفاده کنید.

خوب استفاده از این تابع به جای دستی وارد کردن query_var ها چه فایده ای داره ؟

  • این تابع مطمئن تره یعنی از هر گونه برخورد جلوگیری می کنه و نمیزاره که متغیر های شما به فنا بره. به طور مثال خودش چک می کنه که برای افزودن متغیر جدید از ? استفاده کنه یا & .
  • در استفاده از این تابع شما نیاز به url_encode_deep ندارید و این کار رو خودش انجام میده.
  • کار با این تابع خیلی ترو تمیز تره . یعنی یه آرایه برای نام پارامتر ها و یه آرایه برای مقدارشون.
  • اگر مقدار پارامتر url رو خالی بزارید url صفحه جاری رو بهش اشاره می کنه.

نکته پایانی و مهم : ما در وردپرس امکان ساخت برگه با ساختار محتوای static رو داریم . اگر بخواهیم که ساختار برای ما در برگه dynamic بشه یعنی بدون خروج از برگه تغییراتی رو اعمال کنیم (مثل تغییر نحوه مرتب سازی یا تغییر محتوا – که نمونه اش رو در برگه حساب کاربری ووکامرس دیدید) باید از query_vars استفاده کنیم . حال این که اگر بخواهید متغیر های جدید (query_vars) به صورت ساده نمایش داده بشن با استفاده از add_query_arg این کار رو انجام میدید . اما اگر مایل باشید تا لینک شما به صورت clean بمونه می تونید از rewrite API در ورد پرس استفاده کنید.

 

مطالب مشابه

Settings API در ووکامرس

ما برای ساخت پنل تنظیمات برای افزونه ها از api خود وردپرس استفاده می کردیم. حال این که افزونه مکمل برای ووکامرس می...

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

Settings API در وردپرس

وردپرس برای ساخت پنل تنظیمات شبیه به پنل تنظیمات پیش فرض خودش API هایی رو قرار داده . Settings API , Options API دو...

اشتراک گذاری :

ابوالفضل صباغ

برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای query_vars در وردپرس

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

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