Постоянная ссылка на архив Wordpress с листовой категорией

Постоянные ссылки архива категорий Wordpress, настроенные с помощью% category%, включают полное дерево категорий. Я хочу видеть только листовую категорию в URL-адресе, а не полное дерево.

Пример:

Wordpress Category: recipes > baking > bread
current permalink for archive: domain.com/recipes/baking/bread
desired permalink: domain.com/bread

Я искал в Интернете, не имея представления, как подключить или отфильтровать это изменение в моем коде wordpress, поэтому любые идеи и помощь очень приветствуются. спасибо Ян


person Jan    schedule 21.07.2018    source источник


Ответы (1)


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

add_filter( 'category_link', 'wpse7807_category_link', 10, 2 );
function wpse7807_category_link( $catlink, $category_id )
{
    global $wp_rewrite;
    $catlink = $wp_rewrite->get_category_permastruct();

    if ( empty( $catlink ) ) {
        $catlink = home_url('?cat=' . $category_id);
    } else {
        $category = &get_category( $category_id );
        $category_nicename = $category->slug;

        $catlink = str_replace( '%category%', $category_nicename, $catlink );
        $catlink = home_url( user_trailingslashit( $catlink, 'category' ) );
    }
    return $catlink;
}

слава https://wordpress.stackexchange.com/questions/7807/changing-the-category-permalink-structure.

person Jan    schedule 21.07.2018