Hoomanhpc2 74 ارسال شده در دی 96 گزارش بازنشر ارسال شده در دی 96 سلام. من در وردپرس یک برگه با قالب منحصربهفرد ایجاد کردم که بتوان به URL آن پارامترهایی اضافه کرد تا نسبت به مقادیر این پارامترها محتوای این برگه تغییر کنه. برای مثال آدرس برگه به صورت زیر هست: http://site.com/pagename و به صورت GET یک مقدار به این آدرس اضافه میکنم: http://site.com/pagename/?p=value حال سوالم اینه که چطور میشه با rewrite کردن کاری کرد تا آدرسها کاربرپسند باشه؟ مثلا به صورت یکی از دو الگوی زیر در بیاد؟ http://site.com/pagename/value http://site.com/pagename/p/value من خودم هرکاری کردم نشد. از چندتا ابزار هم استفاده کردم. اما بعد از اضافه کردن کدها کلا چیزی لود نمیشد! اگه راهنماییم کنید ممنون میشم. لینک به ارسال
فرحان 997 ارسال شده در دی 96 گزارش بازنشر ارسال شده در دی 96 سلام. فکر می کنم همچین چیزی نیازتونه که البته باید در جای مناسب به کار ببریدش: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule 3 لینک به ارسال
mehran-b 2385 ارسال شده در دی 96 گزارش بازنشر ارسال شده در دی 96 سلام و درود خود وردپرس سیستم روتینگ داره احتیاجی نیست خودتون مستقیم از htaccess اقدام کنید. این دو صفحه رو مطالعه کنید. https://codex.wordpress.org/Rewrite_API/add_rewrite_rule https://codex.wordpress.org/Plugin_API/Filter_Reference/query_vars موفق باشید 3 لینک به ارسال
Hoomanhpc2 74 ارسال شده در دی 96 مالک گزارش بازنشر ارسال شده در دی 96 سلامی مجدد؛ بابت راهنمایی ممنونم. اما من با توجه به مستنداتی که لینکشون رو گذاشتین کد زیر رو نوشتم. 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¶meter=$matches[1]','top'); } add_action('init', 'custom_rewrite_rule', 10, 0); آیدی برگه 22 هست که تو این کد لحاظ کردم و پارامتر parameter هم تعریف کردم. آدرسی که میخوام تبدیل بشه به این صورته: http://example.com/index.php?page_id=22¶meter=value http://example.com/pageaddress/value وقتی آدرس دوم رو وارد میکنم صفحه مورد نظر باز میشه. اما مقدار پارامتر GET خالی میشه. مثلا برای امتحان وقتی کد زیر رو تو صفحه قرار میدم تا مقدار پارامتر رو چاپ کنه، چیزی مشاهده نمیشه: $var = $_GET['parameter']; echo 'value: ' . $var; اگه جایی رو اشتباه کردم ممنون میشم راهنماییم کنید. لینک به ارسال
mehran-b 2385 ارسال شده در دی 96 گزارش بازنشر ارسال شده در دی 96 ضمن عرض سلام و درود مجدد ابتدا پارامتر 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¶meter=$matches[1]', 'top'); }); خوب اینجا بهتره از بخش تنظیمات -> پیوندهای یکتا یه بار ذخیره تغییرات رو بزنید که رول فوق اضافه بشه به وردپرس. حالا مثلا آدرس زیر رو در نظر بگیرید: http://example.com/pageaddress/salam/ خوب حالا چطوری باید salam رو چاپ کنیم؟ اینجا از تابع get_query_var باید استفاده بشه به این شکل: $var = get_query_var('parameter'); echo 'value: ' . $var; موفق باشید 2 لینک به ارسال
پست های پیشنهاد شده
لطفا برای ارسال دیدگاه وارد شوید
شما بعد از اینکه وارد حساب کاربری خود شدید می توانید دیدگاهی ارسال کنید
ورود به حساب کاربری