Hoomanhpc2

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

5 پست در این موضوع قرار دارد

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

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

http://site.com/pagename

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

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

 

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

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

 

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

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

0

به اشتراک گذاری این پست


لینک به پست

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

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

3

به اشتراک گذاری این پست


لینک به پست

سلام و درود

 

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

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

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

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

 

موفق باشید

3

به اشتراک گذاری این پست


لینک به پست

سلامی مجدد؛

بابت راهنمایی ممنونم. اما من با توجه به مستنداتی که لینکشون رو گذاشتین کد زیر رو نوشتم. 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;

 

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

0

به اشتراک گذاری این پست


لینک به پست

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

 

ابتدا پارامتر 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;

 

موفق باشید

2

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری