API بازنویسی وردپرس

وردپرس دارای یک API بسیار مفید بنام “the” است بازنویسی API” من حدس می زنم که قبلاً از “بازنویسی url” استفاده کرده اند ، این فرایندی است که باعث می شود URL ها قابل خواندن تر باشند. به عنوان مثال ، یک نشانی اینترنتی مانند http://mysite.com/؟page=12&categ=12&author=47 نوشته شده به این خوبی نیست. به خاطر آوردن آن دشوار است ، و موتورهای جستجو آن را دوست ندارند. به همین دلیل است که تقریباً در هر سیستم مدیریت محتوا یک کارکرد داخلی وجود دارد که url را بازنویسی می کند تا اینگونه به نظر برسد: http://mysite.com/categ/business/finance.


بازنویسی API و کلاس WP_Rewrite

در داخل وردپرس ، این فرآیند با نام (the) نیز شناخته می شود ساختار پیوند دهنده. هنگامی که از ساختار پیوند پیش فرض پیش فرض به یک ساختار سفارشی تغییر می کنید ، به طور خودکار API بازنویسی را فعال می کنید. این کاملاً اتوماتیک است. اما گاهی اوقات شما باید قوانین بازنویسی سفارشی خود را ایجاد کنید.

در این پست قصد داریم توابع ساده ایجاد کنیم تا یک قانون بازنویسی ساده سفارشی ایجاد کنیم. بیایید بگوییم که می خواهیم یک مقدار ارجاع شونده دریافت کنیم ، نوع معادل آن با $ _GET [‘مراجعه کننده].

اگر به Codex نگاهی بیندازیم ، می توانیم در صفحه بازنویسی API مشاهده کنیم که این API دارای 6 عملکرد داخلی است. متداول ترین استفاده از بازنویسی استفاده از این توابع است ، آموزش های زیادی در مورد آن وجود دارد ، به همین دلیل قصد دارم به جای توابع از فیلترها استفاده کنم. از آنجا که بله ، API بازنویسی با فیلترها نیز قابل استفاده است! این فیلترها در لیست قرار دارند کلاس WP_Rewrite صفحه کدکس.

افزودن یک Query Var جدید

برای شروع ، باید تابعی را ایجاد کنیم که به وردپرس بگوید که یک قانون بازنویسی جدید تنظیم شده است. این کار است add_rewrite_rule () و add_rewrite_tag ()  توابع ، اما می توانید با استفاده از query_vars و rewrite_rules_array فیلترها برای انجام این کار ، باید دو عملکرد و دو فیلتر ایجاد کنیم. تابع اول به سادگی یک متغیر جدید را به فیلتر query_vars اضافه می کند ، و دومین کار این است که این متغیر جدید را در قوانین بازنویسی جهانی ثبت کند:

/ *
|--------------------------------------------------------------------------
| بازنویسی را شروع کنید. نمونه: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// یک var جدید ثبت کنید
عملکرد rc_add_query_vars ($ vars) {
$ vars [] = "ارجاع دهنده"؛ // نام var همانطور که در URL دیده می شود
بازگشت $ vars؛
}

// عملکرد ما را به query_vars وصل کنید
add_filter ('query_vars'، 'rc_add_query_vars')؛

// قانون بازنویسی جدید را به موارد موجود اضافه کنید
عملکرد rc_add_rewrite_rules ($ قوانین) {
$ new_rules = array ('referrer / ([^ /] +) /؟ $' => 'index.php؟ referrer = $ مسابقات [1]')؛
$ قوانین = $ new_rules + $ قوانین؛
قوانین $ را بازگردانید
}

// عملکرد را به rewrite_rules_array وصل کنید
add_filter ('rewrite_rules_array'، 'rc_add_rewrite_rules')؛

پس از افزودن این کد به هر یک از پرونده های افزونه یا پرونده theme.php مورد نظر خود ، به تنظیمات> Permalink ها دسترسی پیدا کرده و ساختار permalinks را ذخیره کنید. این عمل لازم است اکنون می توانید با این نوع یا آدرس اینترنتی به سایت خود دسترسی پیدا کنید: http://mysite.com/referrer/your-name. اگر می خواهید در یک صفحه خاص هدایت شوید ، index.php؟ referrer = $ مطابق [1] را توسط index.php؟ pagename = my-page & referrer = $ مطابقت [1] که در آن صفحه “my” صفحه قرار دارد تغییر دهید. هدایت به مثل حلزون حرکت کردن.

بازیابی مقدار متغیر

اکنون که قانون بازنویسی شما تنظیم شده است ، ممکن است بخواهید به مقدار متغیر دسترسی پیدا کنید. اما اگر یک $ _GET [‘مراجعه کننده] ساده انجام دهید ، هیچ ارزشی نمی گیرید. برای بازیابی مقادیر URL متغیرها ، باید عملکردی را به فیلتر “template_redirect” وصل كنید. قلاب زدن به فیلتر “اولیه” خیلی زود است. سپس می توانید از طریق شی $ wp_query به متغیرهای مورد نیاز دسترسی پیدا کنید. در اینجا نمونه ای سریع از نحوه انجام آن آورده شده است:

// بازیابی URL var
عملکرد rc_get_my_vars ()
$ wp_query جهانی؛

if (isset ($ wp_query-> query_vars ['referrer'])) {
$ referrer = get_query_var ("ارجاع دهنده")؛
}
}

// عملکرد را به الگوی راهنما وصل کنید
add_action ('template_redirect'، 'rc_get_my_vars')؛

می توانید مقدار ارجاع دهنده $ $ را تکرار کنید یا از متغیر GET معمولی استفاده کنید.

البته می توانید بیش از یک متغیر را تغییر دهید:

// در rc_add_query_vars ()
$ vars [] = "ارجاع دهنده"؛
$ vars [] = "کمپین"؛

// در rc_add_rewrite_rules ()
$ new_rules = array ('referrer / ([^ /] +) / ([^ /] +) /؟ $' => 'index.php؟ pagename = my-page & referrer = $ مطابقت [1] & مبارزات = $ مسابقات [ 2] ')؛

فراموش نکنید که برای استفاده از بازنویسی آدرس شما به ماژول PHP mod_rewrite فعال دارید.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map