2015-02-13 2 views
1

Я переписываю некоторые префиксы URL (например, префикс категории, префикс тега или префикс пользовательской таксономии) в моем плагине Wordpress. Я использую Wordpress' rewrite API:Переписать правила для префиксов URL

add_filter('rewrite_rules_array','wp_insertMyRewriteRules'); 
add_filter('init','flushRules'); 

// Remember to flush_rules() when adding rules 
function flushRules(){ 
    global $wp_rewrite; 
    $wp_rewrite->flush_rules(); 
} 

// Adding a new rule 
function wp_insertMyRewriteRules($rules) 
{ 
    $newrules = array(); 
    $newrules['kategorie/(.+?)/?$'] = 'index.php?category_name=$matches[1]'; 
    return $newrules + $rules; 
} 

Это работает, но система URL-адрес на сайте не изменилась, и WP использует старый префикс «категорию» из базы данных. Как мне переписать эти URL-адреса?

+0

могли бы вы предоставить пример URL вы ожидаете переписать и то, что вы хотите он должен быть переписан? Если вы не написали правило, чтобы переписать этот URL-адрес, сначала попробуйте изменить правило, а затем показать его нам. –

+0

Системные URL-адреса WP получают префикс из базы данных (таблица wp_options). И я пытаюсь динамически переписать эти URL-адреса. То есть 'example.com/category/fruits' необходимо переписать на' example.com/kategorie/fruits'. Мои правила (из моего сообщения) работают - я могу открыть 'example.com/kategorie/fruits'. Но, например, URL-адрес в панировочных сухарях или в любом другом неприменимом месте (не имеет значения) ** не изменились ** (от '/ category /' до '/ kategorie /'), и я не могу их изменить. Я предполагаю, что мои правила перезаписи запускаются после создания URL-адресов, но мне нужно позвонить им раньше. – Raymond

+0

Почему вы не можете изменить параметры, чтобы быть тем, что хотите? – bobdye

ответ

1

Если вы хотите изменить структуру permalink для всех категорий, вы можете настроить ее на Настройки -> Постоянная ссылка -> Категория base.

Если вы хотите изменить ссылку только один или несколько категорий, вы можете использовать WordPress category_link фильтр:

function update_permalink($permalink, $cat_id) { 
    // If $cat_id is category we want to change, modify $permalink 
    return $permalink; 
} 
add_filter('category_link', 'update_permalink', 11, 2); 
Смежные вопросы