Для определения приоритета между страницами и рубриками с одинаковым URL в WordPress, можно использовать функцию `add_rewrite_rule`. С помощью этой функции можно задать правило перенаправления, чтобы при конфликте между страницей и рубрикой с одинаковым URL, WordPress отдавал приоритет рубрике.
Пример кода для определения приоритета рубрики над страницей:
```php
function custom_rewrite_rule() {
add_rewrite_rule( '^my-url$', 'index.php?category_name=my-category', 'top' );
}
add_action( 'init', 'custom_rewrite_rule' );
```
Таким образом, при посещении URL `/my-url`, WordPress будет отдавать приоритет рубрике `my-category`.
Что касается проблемы с классами меню, можно использовать функцию `nav_menu_css_class` для изменения классов активных пунктов меню на основе рубрики, а не страницы. Например:
```php
function custom_nav_menu_css_class( $classes, $item ) {
if ( is_category() && $item->object == 'category' ) {
$category = get_category( get_query_var( 'cat' ) );
if ( $category->slug == $item->url ) {
$classes[] = 'current-menu-item';
}
}
return $classes;
}
add_filter( 'nav_menu_css_class', 'custom_nav_menu_css_class', 10, 2 );
```
Этот код позволит добавлять класс `current-menu-item` к активному пункту меню на основе текущей рубрики.
Обратите внимание, что изменение стандартного поведения WordPress может привести к некорректной работе функционала и рекомендуется тщательно тестировать изменения на сайте перед публикацией.