Title: Удалить ярлык категории и добавить html в конец ссылки
Last modified: 21.09.2017

---

# Удалить ярлык категории и добавить html в конец ссылки

 *  [IgorIvanov](https://ru.wordpress.org/support/users/igorivanov/)
 * (@igorivanov)
 * [9 лет назад](https://ru.wordpress.org/support/topic/woocommerce-%d1%83%d0%b4%d0%b0%d0%bb%d0%b8%d1%82%d1%8c-%d1%8f%d1%80%d0%bb%d1%8b%d0%ba-%d0%ba%d0%b0%d1%82%d0%b5%d0%b3%d0%be%d1%80%d0%b8%d0%b8-%d0%b8-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-htm/)
 * Здравствуйте! Мучаюсь целый день сегодня.
    Есть код, что бы удалить ярлык категории
   из ссылки:
 *     ```
       add_filter('request', 'true_smenit_request', 1, 1 );
   
       function true_smenit_request( $query ){
   
       	$taxonomia_name = 'product_cat'; // укажите название таксономии здесь, это также могут быть рубрики category или метки post_tag
   
       	// запросы для дочерних элементов будут отличаться, поэтому нам потребуется дополнительная проверка
       	if( $query['attachment'] ) :
       		$dochernia = true; // эту переменную задаём для себя, она нам потребуется дальше
       		$urlyarlyk = $query['attachment']; // это ярлык данного термина/рубрики/метки
       	else:
       		$dochernia = false;
       		$urlyarlyk = $query['name']; // как видите, здесь ярлык хранится в другой переменной запроса
       	endif;
   
   
       	$termin = get_term_by('slug', $urlyarlyk, $taxonomia_name); // получаем элемент таксономии по ярлыку
   
       	if ( isset( $urlyarlyk ) && $termin && !is_wp_error( $termin )): // если такого элемента не существует, прекращаем выполнение кода
   
       		// для страниц дочерних элементов код немного отличается
       		if( $dochernia ) {
       			unset( $query['attachment'] );
       			$parent = $termin->parent;
       			while( $parent ) {
       				$parent_term = get_term( $parent, $taxonomia_name);
       				$urlyarlyk = $parent_term->slug . '/' . $urlyarlyk; // нам нужно получить полный путь, состоящий из ярлыка текущего элемента и всех его родителей
       				$parent = $parent_term->parent;
       			}
       		} else {
       			unset($query['name']);
       		}
   
   
   
       	endif;
   
       	return $query;
   
       }
   
       // смена самой ссылки
       add_filter( 'term_link', 'true_smena_permalink', 10, 3 );
   
       function true_smena_permalink( $url, $term, $taxonomy ){
   
       	$taxonomia_name = 'product_cat'; // название таксономии, тут всё понятно
       	$taxonomia_slug = 'product-category'; // ярлык таксономии - зависит от параметра rewrite, указанного при создании и может отличаться от названия,
       	// как например таксономия меток это post_tag, а ярлык по умолчанию tag
   
       	// выходим из функции, если указанного ярлыка таксономии нет в URL или если название таксономии не соответствует
       	if ( strpos($url, $taxonomia_slug) === FALSE || $taxonomy != $taxonomia_name ) return $url;
   
       	$url = str_replace('/' . $taxonomia_slug, '', $url); // если мы ещё тут, выполняем замену в URL
   
       	return $url;
       }
       ```
   
 * и есть код, что бы добавить в конец ссылки категории товара .html:
 *     ```
       function wpse_178112_category_permastruct_html( $taxonomy, $object_type, $args ) {
           if ( $taxonomy === 'product_cat' )
               add_permastruct( $taxonomy, "{$args['rewrite']['slug']}/%$taxonomy%.html", $args['rewrite'] );
       }
   
       add_action( 'registered_taxonomy', 'wpse_178112_category_permastruct_html', 40, 4 );
       ```
   
 * По отдельности все работает как нужно. А вот вместе — ошибка 404… т.е. ссылка
   открывается в нужном формате, но страницы по этому адресу нет (она без .html 
   на конце) 🙁
    Как бы все это совместить?
    -  Тема изменена 9 лет назад пользователем [SeVlad](https://ru.wordpress.org/support/users/sevlad/).
      Причина: перенос в подходящий раздел
    -  Тема изменена 9 лет назад пользователем [IgorIvanov](https://ru.wordpress.org/support/users/igorivanov/).

Просмотр 4 ответов — с 1 по 4 (всего 4)

 *  [Quazimorda](https://ru.wordpress.org/support/users/quazimorda/)
 * (@quazimorda)
 * [9 лет назад](https://ru.wordpress.org/support/topic/woocommerce-%d1%83%d0%b4%d0%b0%d0%bb%d0%b8%d1%82%d1%8c-%d1%8f%d1%80%d0%bb%d1%8b%d0%ba-%d0%ba%d0%b0%d1%82%d0%b5%d0%b3%d0%be%d1%80%d0%b8%d0%b8-%d0%b8-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-htm/#post-260224)
 * А кто мешает поставить плагин WP No Category Base, а в постоянных ссылках прописать
   что-то вроде /%category%/%postname%.html? Зачем весь этот огород городить?
 *  Автор [IgorIvanov](https://ru.wordpress.org/support/users/igorivanov/)
 * (@igorivanov)
 * [9 лет назад](https://ru.wordpress.org/support/topic/woocommerce-%d1%83%d0%b4%d0%b0%d0%bb%d0%b8%d1%82%d1%8c-%d1%8f%d1%80%d0%bb%d1%8b%d0%ba-%d0%ba%d0%b0%d1%82%d0%b5%d0%b3%d0%be%d1%80%d0%b8%d0%b8-%d0%b8-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-htm/#post-260225)
 * > А кто мешает поставить плагин WP No Category Base, а в постоянных ссылках прописать
   > что-то вроде /%category%/%postname%.html? Зачем весь этот огород городить?
 * Это категории товаров — в постоянных ссылках html не прописывается
 *  [Quazimorda](https://ru.wordpress.org/support/users/quazimorda/)
 * (@quazimorda)
 * [9 лет назад](https://ru.wordpress.org/support/topic/woocommerce-%d1%83%d0%b4%d0%b0%d0%bb%d0%b8%d1%82%d1%8c-%d1%8f%d1%80%d0%bb%d1%8b%d0%ba-%d0%ba%d0%b0%d1%82%d0%b5%d0%b3%d0%be%d1%80%d0%b8%d0%b8-%d0%b8-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-htm/#post-260226)
 * Упс. Сорри, был невнимателен. Но обычно у всяких там woocommerce имеются расширения
   для этой цели.
 *  Автор [IgorIvanov](https://ru.wordpress.org/support/users/igorivanov/)
 * (@igorivanov)
 * [9 лет назад](https://ru.wordpress.org/support/topic/woocommerce-%d1%83%d0%b4%d0%b0%d0%bb%d0%b8%d1%82%d1%8c-%d1%8f%d1%80%d0%bb%d1%8b%d0%ba-%d0%ba%d0%b0%d1%82%d0%b5%d0%b3%d0%be%d1%80%d0%b8%d0%b8-%d0%b8-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-htm/#post-260313)
 * Подозреваю, что дело в этой строчке `add_permastruct( $taxonomy, "{$args['rewrite']['
   slug']}/%$taxonomy%.html", $args );` , а именно {$args[‘rewrite’][‘slug’]} — 
   т.к. если я это выражения удаляю, то категории выводятся как надо… но все остальные
   страницы тогда — ошибка 404.. (
    Кто-нибудь может подсказать?

Просмотр 4 ответов — с 1 по 4 (всего 4)

 Тема «Удалить ярлык категории и добавить html в конец ссылки» закрыта для новых
ответов.

 * Форум: [WooCommerce](https://ru.wordpress.org/support/forum/woocommerce/)
 * 4 ответа
 * 2 участника
 * Последний ответ: [IgorIvanov](https://ru.wordpress.org/support/users/igorivanov/)
 * Последняя активность: [9 лет назад](https://ru.wordpress.org/support/topic/woocommerce-%d1%83%d0%b4%d0%b0%d0%bb%d0%b8%d1%82%d1%8c-%d1%8f%d1%80%d0%bb%d1%8b%d0%ba-%d0%ba%d0%b0%d1%82%d0%b5%d0%b3%d0%be%d1%80%d0%b8%d0%b8-%d0%b8-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-htm/#post-260313)
 * Статус: нерешённая

## Темы

### Самые популярные темы

### Темы без ответов

### Без вопроса

### Решённые

### Нерешённые

### Все темы
