رفتن به مطلب

rewrite کردن پارامترهای GET در آدرس یک برگه وردپرس


پست های پیشنهاد شده

سلام. من در وردپرس یک برگه با قالب منحصربه‌فرد ایجاد کردم که بتوان به URL آن پارامترهایی اضافه کرد تا نسبت به مقادیر این پارامترها محتوای این برگه تغییر کنه.

برای مثال آدرس برگه به صورت زیر هست:

http://site.com/pagename

و به صورت GET یک مقدار به این آدرس اضافه می‌کنم:

http://site.com/pagename/?p=value

 

حال سوالم اینه که چطور می‌شه با rewrite کردن کاری کرد تا آدرس‌ها کاربرپسند باشه؟ مثلا به صورت یکی از دو الگوی زیر در بیاد؟

http://site.com/pagename/value
http://site.com/pagename/p/value

 

من خودم هرکاری کردم نشد. از چندتا ابزار هم استفاده کردم. اما بعد از اضافه کردن کدها کلا چیزی لود نمی‌شد!

اگه راهنماییم کنید ممنون می‌شم.

لینک به ارسال

سلام. فکر می کنم همچین چیزی نیازتونه که البته باید در جای مناسب به کار ببریدش:

https://codex.wordpress.org/Rewrite_API/add_rewrite_rule

لینک به ارسال

سلام و درود

 

خود وردپرس سیستم روتینگ داره احتیاجی نیست خودتون مستقیم از htaccess اقدام کنید.

این دو صفحه رو مطالعه کنید.

https://codex.wordpress.org/Rewrite_API/add_rewrite_rule

https://codex.wordpress.org/Plugin_API/Filter_Reference/query_vars

 

موفق باشید

لینک به ارسال
  • 2 هفته بعد...

سلامی مجدد؛

بابت راهنمایی ممنونم. اما من با توجه به مستنداتی که لینکشون رو گذاشتین کد زیر رو نوشتم. URL هم دقیقا به همون شکلی که می‌خواستم تبدیل شد. ولی مشکلی که هست مقدار پارامتر GET خالی می‌شه و عملا نمی‌تونم فرایندهایی که قراره تو این برگه با توجه به مقدار GET انجام بشه رو انجام بدم!

کدهایی که نوشتم به این صورته:

function custom_rewrite_tag() {
  add_rewrite_tag('%parameter%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag', 10, 0);

function custom_rewrite_rule() {
    add_rewrite_rule('^pageaddress/([^/]*)/?','index.php?page_id=22&parameter=$matches[1]','top');
}
add_action('init', 'custom_rewrite_rule', 10, 0);

 

آی‌دی برگه 22 هست که تو این کد لحاظ کردم و پارامتر parameter هم تعریف کردم. آدرسی که می‌خوام تبدیل بشه به این صورته:

http://example.com/index.php?page_id=22&parameter=value
http://example.com/pageaddress/value

وقتی آدرس دوم رو وارد می‌کنم صفحه مورد نظر باز می‌شه. اما مقدار پارامتر GET خالی می‌شه. مثلا برای امتحان وقتی کد زیر رو تو صفحه قرار می‌دم تا مقدار پارامتر رو چاپ کنه، چیزی مشاهده نمی‌شه:

$var = $_GET['parameter'];
echo 'value: ' . $var;

 

اگه جایی رو اشتباه کردم ممنون می‌شم راهنماییم کنید.

لینک به ارسال

ضمن عرض سلام و درود مجدد

 

ابتدا پارامتر parameter را به صورت سراسری برای وردپرس تعریف میکنید.

add_filter('query_vars', function($vars) {
	$vars[] = 'parameter';
	return $vars;
});

در وهله بعدی رول مورد نظر خودمون رو که توش از پارامتر parameter استفاده شده به وردپرس اضافه میکنیم.

add_action('init', function() {
    add_rewrite_rule('^pageaddress/([^/]*)/?', 'index.php?page_id=22&parameter=$matches[1]', 'top');
});

خوب اینجا بهتره از بخش تنظیمات -> پیوندهای یکتا یه بار ذخیره تغییرات رو بزنید که رول فوق اضافه بشه به وردپرس.

حالا مثلا آدرس زیر رو در نظر بگیرید:

http://example.com/pageaddress/salam/

خوب حالا چطوری باید salam رو چاپ کنیم؟

اینجا از تابع get_query_var باید استفاده بشه به این شکل:

$var = get_query_var('parameter');
echo 'value: ' . $var;

 

موفق باشید

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...