Поддержка Проблемы и решения Функция замены постоянных ссылок

  • Уважаемые участники, прошу помощи.

    в wp-includes/link-template.php есть строчка $cats = get_the_category($post->ID); формирует массив категорий определенного поста. Дальше все уходит на сортировку, в итоге получаем ссылку вида /category/…/пост/

    Помогите составить функцию для functions.php которая позволит изменить вид ссылок
    знаю только что делается это через apply_filters( ‘pre_post_link’, $permalink, $post, $leavename );

    Усложняет задачу то, что в функцию необходимо подставить значение категории которая является дочерней категории с ID = 310. Если не одна из категорий не принадлежит 310, то все оставить как есть.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • я не понимаю, что вам в итоге надо.
    персональные ссылки для какой-либо рубрики или что?

    Автор AVILOT

    (@avilot-ru)

    персональные ссылки на посты
    Пример:
    Пост находится в трех категориях, при формировании ссылки необходимо в приоритете подставлять категорию являющейся дочерней категории с ID = 310. Если такой нет, то формирование в обычном режиме.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    
    function change_post_links( $post_link_category, $categories, $post ) {
    	foreach ( $categories as $category ) {
    		if ( 310 == $category->parent ) {
    			$post_link_category = $category;
    			break;
    		}
    	}
    	return $post_link_category;
    }
    add_filter( 'post_link_category', 'change_post_links', 10, 3 );
    
    Автор AVILOT

    (@avilot-ru)

    Сергей! Спасибо тебе огромное. Неделю мучаюсь не мог сделать.
    Единственный момент, в ссылку попала родительская категория (вот пример https://домен/russia/perm/пост.html из нее russia — это лишнее)
    Можно как-то в этот же фильтр добавить чтобы он исключал ее?

    Автор AVILOT

    (@avilot-ru)

    russia — это и есть категория 310

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Функция замены постоянных ссылок» закрыта для новых ответов.