آشنایی با Hooks و rewrite_rules در وردپرس

wordpress hooks rewrite rules
25 آذر 1403

آشنایی با 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');
    اگر صفحه مربوطه باشد، قالب سفارشی بارگذاری می‌شود.


سوالات متداول

؟

چطور می‌توانم از Hooks در وردپرس استفاده کنم؟

؟

rewrite_rules چه کاربردی دارد؟

؟

آیا می‌توانم چندین rewrite_rule داشته باشم؟