آشنایی با Hooks و rewrite_rules در وردپرس
در دنیای توسعه وب و به خصوص در سیستم مدیریت محتوای وردپرس، Hooks یک مفهوم بسیار مهم هستند که به ما اجازه میدهند تا به راحتی کدنویسی خود را ارتقا دهیم. وقتی صحبت از rewrite_rules میشود، به نوعی از hooks اشاره داریم که به تغییر و تنظیم آدرس URLهای وردپرس کمک میکند. هنگامی که شما میخواهید URLهای سفارشی برای پستها و صفحات سایت خود ایجاد کنید، این عملکرد بسیار مفید خواهد بود.
از آنجا که URLهای بهینهسازی شده (SEO-friendly) مهمترین نکته در جذب کاربران بیشتر به سایت شما هستند، استفاده از rewrite_rules برای تنظیم این URLها ضروری است. مثلاً اگر شما میخواهید آدرس URL صفحهای خاص به شکل example.com/my-custom-page
باشد به جای آدرس پیشفرضی که وردپرس تعیین میکند، باید با ایجاد و استفاده از یک Hook خاص این کار را انجام دهید.
فرآیند کار با rewrite_rules به گونهای است که ابتدا باید یک سری قوانین جدید برای URLها تعریف کنیم و سپس به وردپرس بگوییم که این قوانین جدید قابل استفاده هستند. همچنین، برای این کار احتیاج داریم که به درستی کوئریهای مربوط به پستها و صفحات خود را تجزیه و تحلیل کنیم تا مطمئن باشیم که URLهای جدید به درستی کار میکنند.
با استفاده از این Hook، شما میتوانید URLهای سایت خود را به نحو بهینه تنظیم کرده و علاوه بر بهبود SEO، تجربه کاربری بهتری برای بازدیدکنندگان خود فراهم کنید. بیایید نگاهی به چگونگی ایجاد یک rewrite_rule بیندازیم و ببینیم چگونه میتوانیم این کار را انجام دهیم.
نمونه کد برای تغییر rewrite_rules
add_action('init', 'my_custom_rewrite_rules');
function my_custom_rewrite_rules() {
add_rewrite_rule('^my-custom-page/?$', 'index.php?pagename=my-custom-page', 'top');
}
add_action('template_redirect', 'my_custom_template_redirect');
function my_custom_template_redirect() {
if (is_page('my-custom-page')) {
include(TEMPLATEPATH . '/my-custom-template.php');
exit;
}
}
توضیحات کد:
add_action('init', 'my_custom_rewrite_rules');
این خط یک Hook ایجاد میکند و به وردپرس میگوید که در زمان init، تابع my_custom_rewrite_rules را اجرا کند.function my_custom_rewrite_rules() { ... }
در این تابع، قوانین جدید URL تعریف میشوند.add_rewrite_rule('^my-custom-page/?$', 'index.php?pagename=my-custom-page', 'top');
در این خط، یک قانون جدید به سیستم اضافه میشود تا URL جدید به صفحه مورد نظر متصل شود.add_action('template_redirect', 'my_custom_template_redirect');
این خط همچنین یک Hook برای انتقال به قالب جدید ایجاد میکند.if (is_page('my-custom-page')) { ... }
در این قسمت، شرط بررسی میکند که آیا صفحه باز شده، مربوط به URL جدید است یا خیر.include(TEMPLATEPATH . '/my-custom-template.php');
اگر صفحه مربوطه باشد، قالب سفارشی بارگذاری میشود.