Intereting Posts
Дублирование сообщений с помощью Feedwordpress переадресовать «об авторе» на страницу Какой бы я использую, если я хочу обновить поле профиля пользователя при создании нового пользователя? Ошибка загрузки файлов: «Загруженный файл был загружен только частично». Индивидуальная проверка формы Когда я нажимаю «Редактировать» в сообщении, все содержимое исчезает. Кто-нибудь знает, как это исправить? Получайте изображение с пользовательским размером за пределами WordPress Страница не найдена ошибка при загрузке файла из wp-контента IF Пользовательское значение поля равно ZERO Как добавить кнопки пользовательского интерфейса в настройке, например, двадцать одиннадцать отобразить порядок соединений wp_nav_menu не выделяет текущую категорию при просмотре одной записи Как изменить домен WordPress с удаленного на localhost? Невозможно фильтровать / группировать элементы меню в зависимости от категории страниц в меню с помощью wp_nav_menu Существует ли код для создания мета-ящиков в таксономии

Как исключить не классифицированные из структуры permalink /% category% /% postname% /

Я использую настраиваемую структуру постоянной ссылки:

/%category%/%postname%/ 

Так что мои сообщения перечислены как:

 mysite.com/widgets/blue-widget 

Это прекрасно работает, пока «синий виджет» существует в одной и только одной категории. Однако, когда он появляется в более чем одной категории, например, возможно, в случае некатегоризированного ребенка, результирующий URL-адрес становится следующим:

 mysite.com/uncategorized/child-of-uncategorized/blue-widget 

Даже несмотря на то, что сообщение все еще находится в «виджетах», похоже, что есть что-то, что делает его категоризированным козырем. Я верю, потому что он имеет более низкий идентификатор.

Мне нужно знать, можно ли исключить некатегоризированные и любые дети, не имеющие классификации, в структуре постоянной ссылки.

ОБНОВЛЕНО ПРИМЕР:

Итак, если сообщение находится в трех категориях, например:

Widgets (parent_id = 0), Uncategorized (parent_id = 0), Child of Uncategorized (parent_id = 1)

Я хочу, чтобы фильтр использовал «Виджеты» как пул permalink и исключал «не классифицированные» и все его дочерние элементы.

Если сообщение состоит из двух или более категорий, которые не являются категоризированными, или дочернего элемента без категоризации, то просто используйте новейшую категорию как пролонгированную ссылку.

Если сообщение назначается исключительно для некатегоризированного или одного из его дочерних элементов, тогда не отображается постоянная ссылка категории slug

Я надеюсь, что это сработает для вас: D

 function mf_post_link( $permalink, $post, $leavename ) { if( $post->post_type != 'post' ) return $permalink; // if no category, the filter is deactivated $cats = get_the_category($post->ID); if( ! count($cats) ) return $permalink; usort($cats, '_usort_terms_by_ID'); // order by ID $category_object = apply_filters( 'post_link_category', $cats[0], $cats, $post ); $category_object = get_term( $category_object, 'category' ); $parent = $category_object->parent; // if no father, the filter is deactivated if ( !$parent ) return; $category_parent = get_term( $parent, 'category' ); // if the parent is not uncategorized, the filter is deactivated if( $category_parent->slug != 'uncategorized' ) return $permalink; return str_replace('uncategorized/', '', $permalink); } add_filter( 'post_link', 'mf_post_link', 9, 3 ); 

РЕДАКТИРОВАТЬ:

если должность является категорией «без категоризации» или дочерней категорией «без категоризации» в качестве основной категории, измените правило постоянной ссылки «/% category% /% postname%» на «/% postname%»

 function my_pre_post_link( $permalink, $post, $leavename ) { if( $post->post_type != 'post' ) return $permalink; $cats = get_the_category($post->ID); if( ! count($cats) ) return $permalink; usort($cats, '_usort_terms_by_ID'); $category_object = apply_filters( 'post_link_category', $cats[0], $cats, $post ); $category_object = get_term( $category_object, 'category' ); return _clear_uncategorized($category_object, $permalink); } function _clear_uncategorized($cat, $permalink) { if( $cat->slug == 'uncategorized' ) { return str_replace('%category%/', '', $permalink); } $parent = $cat->parent; if ( !$parent ) return $permalink; return _clear_uncategorized($parent, $permalink); } add_filter( 'pre_post_link', 'my_pre_post_link', 9, 3 );