تابع add_rewrite_rule() در وردپرس

wordpress add rewrite rule
05 دی 1403

نحوه استفاده از تابع add_rewrite_rule() در وردپرس


تابع add_rewrite_rule() در وردپرس برای ایجاد قوانین جدید رایت در سیستم URL وردپرس استفاده می‌شود. این تابع به ما این امکان را می‌دهد که URL های دلخواه خود را بسازیم و به محتوای مشخصی متصل کنیم. برای مثال، اگر بخواهیم یک URL خاص برای نمایش یک دسته‌بندی خاص یا پست خاصی ایجاد کنیم، می‌توانیم از این تابع بهره بگیریم.


در واقع، این تابع به ما این امکان را می‌دهد که URL هایی با ساختار خاص بسازیم و در نتیجه، توانایی مدیریت بهتر URL ها را به ما می‌دهد. به عنوان مثال، فرض کنید شما می‌خواهید یک URL سفارشی برای نمایش اخبار سایت خود ایجاد کنید. با استفاده از add_rewrite_rule() می‌توانید به سادگی این کار را انجام دهید و سپس توسط آن URL، محتوای مورد نظر خود را نمایش دهید.


همچنین، پس از اضافه کردن قوانین جدید، باید از تابع flush_rewrite_rules() نیز استفاده کنیم تا وردپرس دستورالعمل‌های جدید را شناسایی کند. بنابراین، خیلی مهم است که بعد از هر بار اضافه کردن یا تغییر قوانین URL، این تابع را فراموش نکنیم.


حالا بیایید ببینیم که چطور می‌توانیم از این تابع استفاده کنیم. مثلاً یک وسیله برای نمایش نوشته‌های خاص با URL دلخواه اضافه خواهیم کرد. این کار با استفاده از کد زیر امکان‌پذیر است:


function custom_rewrite_rule() {
add_rewrite_rule('^news/([^/]*)/?', 'index.php?pagename=news&slug=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_rule');

function custom_flush_rewrite_rules() {
flush_rewrite_rules();
}
add_action('init', 'custom_flush_rewrite_rules');

در این کد، ما تابع custom_rewrite_rule() را تعریف کرده‌ایم که قانون جدیدی را برای URL های خبری اضافه می‌کند. سپس با استفاده از add_action()، این تابع را به هک init متصل می‌کنیم. همچنین یک تابع دیگر برای flush_rewrite_rules() ایجاد کرده‌ایم که به ما اطمینان می‌دهد قوانین جدید به درستی شناسایی می‌شوند.


با اجرای این کد، حالا می‌توانید با URL های جدیدی مانند yourdomain.com/news/some-slug به محتوای خاص خود دسترسی داشته باشید. این ویژگی به شما این امکان را می‌دهد که URL هایی بهینه و دلخواه برای سایت خود ایجاد کنید و تجربه کاربری بهتری را فراهم آورید.


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

؟

تابع add_rewrite_rule() چکار می‌کند؟

؟

چرا باید از تابع flush_rewrite_rules() استفاده کنیم؟

؟

می‌توانم چندین قانون رایت را به صورت همزمان اضافه کنم؟

؟

آیا پس از تغییرات، باید همیشه flush_rewrite_rules() را فراخوانی کنم؟