Так, це можливо, але якщо плагін створює спеціальний тип публікації за допомогою rewrite => array('slug' => 'post_type')
параметра, то ймовірно, що ви зможете замінити слизу.
Щоразу, коли створені спеціальні типи публікацій, правила перезапису URL-адрес записуються в базу даних. Залежно від того, яка дія запускає створення користувальницького типу публікації (наприклад, дії init ), WordPress очищатиме правила перезапису та відновлює ковзання користувальницького типу публікації незалежно від змін, які ви намагаєтесь внести.
Однак, ви можете надати користувацькі плаги для спеціальних типів публікацій. Наступний приклад передбачає, що у вас є власний тип публікації movies
та ви намагаєтесь змінити /movies/
слизу на /films/
.
Щоб завершити, ось основна функція, яка використовується для визначення movies
типу користувальницької публікації. Плагін, на який ви посилаєтесь, повинен робити щось подібне:
function movies_register_post_type() {
register_post_type(
'movies',
array(
'labels' => array(
'name' => __('Movies'),
'singular_name' => __('Movie')
),
'public' => true,
'has_archive' => true,
'rewrite' => array(
'slug' => 'movies'
)
)
);
} // end example_register_post_type
add_action('init', 'movies_register_post_type');
Ви можете змінити таблицю параметрів, надавши власні власні правила на основі існуючого типу публікації.
В основному, ми це зробимо:
- Візьміть існуючий набір правил, а потім напишіть свої власні за допомогою власних користувальницьких шлаків
- Надайте новому правилу більш високий пріоритет, ніж куля користувацького типу публікації
Ось як це можна зробити:
function add_custom_rewrite_rule() {
// First, try to load up the rewrite rules. We do this just in case
// the default permalink structure is being used.
if( ($current_rules = get_option('rewrite_rules')) ) {
// Next, iterate through each custom rule adding a new rule
// that replaces 'movies' with 'films' and give it a higher
// priority than the existing rule.
foreach($current_rules as $key => $val) {
if(strpos($key, 'movies') !== false) {
add_rewrite_rule(str_ireplace('movies', 'films', $key), $val, 'top');
} // end if
} // end foreach
} // end if/else
// ...and we flush the rules
flush_rewrite_rules();
} // end add_custom_rewrite_rule
add_action('init', 'add_custom_rewrite_rule');
Тепер у вас є два способи отримати доступ до своїх фільмів:
/movies/Back-To-The-Future
/films/Back-To-The-Future
Зауважте, що я не рекомендую вступати add_custom_rewrite_rule
в init
дію, оскільки це буде надто часто стріляти. Це лише приклад. Кращим місцем для застосування функції буде активація теми, активація плагіну, можливо, дія save_post тощо. Залежно від того, що вам потрібно зробити, вам може знадобитися запустити її лише один раз або лише кілька разів.
На цьому етапі ви можете розглянути питання про оновлення постійних посилань для користувацького типу публікації для використання " /movies/
слизи". Наприклад, якщо ви перейдете на сторінку /films/
, ви побачите список усіх ваших фільмів, але наведення курсору на назву дозволить виявити, що /movies/
слизька все ще використовується.
Щоб піти на крок далі, ви можете технічно встановити переспрямування 301, щоб зафіксувати всі посилання /movies/
на переадресацію до їх /films/
колеги, але все це залежить від того, що ви намагаєтеся зробити.