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

query_vars در وردپرس

در این مقاله قصد داریم تا در رابطه با query_vars یا همان متغیر های نهان در url صحبت کنیم.اگر شما از ساختار ساده در permalink استفاده کنید به طور مثال http://gnutec.ir/?p=123 می تونید query_vars رو در اون ها ببینید مثلا همین p که نشون دهنده پست جاری است. یا زمانی که جستجو در وب سایت اتفاق می افته شما در لینکتون متغیر s رو دارید که اون هم یک query_vars است که نشون دهنده کلید جستجو شده در وب سایت هست.http://gnutec.ir/?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

خوب با قطعه کد بالا ما تونستیم تا یک query_var به لیست query_vars موجود در وب سایتمون اضافه کنیم که هنوز مقداری نداره . خوب ما می تونیم تا با فیلتر روی ٖrewrite_rules_array یا استفاده از تابع add_rewrite_rule مقدارش رو در لینک هاس تمیز توسط کاربر تعیین کنیم که این مورد در جلسه بررسی rewrite API در وردپرس کاملا بررسی می شه.

شما با قطعه کد زیر می تونید به 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_args

 

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

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

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

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

  • خوب استفاده از این تابع به جای دستی وارد کردن query_var ها چه فایده ای داره ؟
    این تابع مطمئن تره یعنی از هر گونه برخورد جلوگیری می کنه و نمیزاره که متغیر های شما به فنا بره. به طور مثال خودش چک می کنه که برای افزودن متغیر جدید از ? استفاده کنه یا & .
  • در استفاده از این تابع شما نیاز به url_encode_deep ندارید و این کار رو خودش انجام میده.

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

 

مطالب مشابه

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

نکات امنیتی وردپرس

چون وردپرس یک سیستم متن باز است لذا کدهای آن و ساختار پایگاه داده آن برای تمامی افراد قابل دسترس است . به همین منظور...

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

Hooks: Actions and Filters

هیچ وقت هسته وردپرس رو تغییر ندید (do'nt touch the core) . بدین معنی هست که برای هک وردپرس راه دیگری غیر از تغییر...

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

Ajax در وردپرس

ajax یک درخواست به سرور (request) و دریافت پاسخ (Response) بدون refresh صفحه از طریق شی xmlHttpRequest است. Request...

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

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

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

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

پاسخ دهید

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