Удалить ярлык категории и добавить html в конец ссылки
-
Здравствуйте! Мучаюсь целый день сегодня.
Есть код, что бы удалить ярлык категории из ссылки: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 на конце) 🙁
Как бы все это совместить?
Просмотр 4 ответов — с 1 по 4 (всего 4)
Просмотр 4 ответов — с 1 по 4 (всего 4)
- Тема «Удалить ярлык категории и добавить html в конец ссылки» закрыта для новых ответов.