Intereting Posts
Как сделать wp-signup.php 1-ступенчатым процессом Как фильтровать категории в структуре постоянной ссылки Ссылки в социальных сетях на главной странице – в пределах сообщений / пост-цикла Использование плагина для показа / скрытия содержимого после заголовка? Переписать правила в .htaccess получить перезапись? Вызов меню WordPress за пределами игнорирует пользовательский пункт меню Добавить рекламный блок на страницу определенной категории get_post_meta ($ post-> ID) возвращает пустую строку, когда в режиме предварительного просмотра пользовательского типа сообщения фоновое изображение в сообщении с изображениями сверху Pre Get Posts / Multiple Meta Keys / Orderby Single Key Как отлаживать модульный тест для плагина WordPress, который использует WordPress-тест? Как добавить элемент после миниатюры Изменение размеров встраиваемых объектов по умолчанию? Удаление одной цитаты в str_replace для функции Nav Как показать текущую категорию статьи с пользовательским интерфейсом CPT

пользовательская таксономия и пользовательский тип URL-адреса

У меня есть одна серьезная проблема с URL.

есть специальный тип сообщений. это slug – новости .

Новости таксономии slug: news_category

URL-адрес таксономии новостей: http://domain.com/news_category/press-release

Я хочу изменить URL- адрес новостной категории в новостях новостей .

поэтому URL-адрес таксономии новостей будет:

http://domain.com/news/press-release 

Я пытался переписать slug news_category на новости, но это создает проблему с конфликтом. новости показывают новостной url, но все сообщения типа новостей возвращаются 404 не найдены

URL новостного сообщения:

  http://domain.com/news/POST_TITLE 

поскольку сообщения url также содержат новость, в которую входят оба конфликта. получив ошибку 404.

можно ли это исправить? как я могу это исправить?

любая помощь будет принята с благодарностью.

Solutions Collecting From Web of "пользовательская таксономия и пользовательский тип URL-адреса"

Попробуйте этот код. Это может вам помочь.

  class Tax_Seo_Perma { public function __construct() { // Hooks add_filter('rewrite_rules_array',array($this, 'create_rewrite_rules')); add_filter('wp_loaded', array($this, 'flush_rules')); add_filter('post_link', array($this, 'modify_link_addresses'), 10, 3); //add_filter('post_type_link', 'tsp_write_link_addresses', 10, 3); } public function flush_rules(){ global $wp_rewrite; $wp_rewrite->flush_rules(); } public function create_rewrite_rules($rewrite) { global $wp_rewrite; // loop through custom taxonomies $args = array( 'public' => true, '_builtin' => false ); $output = 'names'; // or objects $operator = 'and'; // 'and' or 'or' $custom_taxonomies = get_taxonomies($args, $output, $operator); if ($custom_taxonomies) { foreach ($custom_taxonomies as $tax_name ) { $tax_token = '%'.$tax_name.'%'; $wp_rewrite->add_rewrite_tag($tax_token, '(.+)', $tax_name.'='); } } // read current permalink structure and set the same structre $keywords_rewrite = $wp_rewrite->generate_rewrite_rules($wp_rewrite->root.$wp_rewrite->permalink_structure); return ( $rewrite + $keywords_rewrite ); } public function modify_link_addresses($permalink, $post_id, $leavename) { global $blog_id; global $wp_rewrite; // this is user's permalink structure set in options $permastruct = $wp_rewrite->permalink_structure; $args = array( 'public' => true, '_builtin' => false ); $output = 'names'; // or objects $operator = 'and'; // 'and' or 'or' $custom_taxonomies = get_taxonomies($args, $output, $operator); if ($custom_taxonomies) { foreach ($custom_taxonomies as $tax_name ) { $tax_token = '%'.$tax_name.'%'; $tax_terms = get_the_terms( $post->id, $tax_name ); //var_dump($tax_terms); if ( !empty($tax_terms) ) { foreach($tax_terms as $a_term) { $long_slug = $a_term->slug; if( false != (int)$a_term->parent ) { // a's parent p exists $p_term = get_term( (int)$a_term->parent, $tax_name );//var_dump($p_term->slug); $long_slug = ($p_term->slug) ? $p_term->slug .'+'. $long_slug : $long_slug; } if( false != (int)$a_term->parent AND false != (int)$p_term->parent ) { // p's parent g exists $g_term = get_term( (int)$p_term->parent, $tax_name ); $long_slug = ($g_term->slug) ? $g_term->slug .'+'. $long_slug : $long_slug; } $permalink = str_replace($tax_token, $long_slug, $permalink); break; } } else {$permalink = str_replace($tax_token, 'no-'.$tax_name, $permalink); } } } return $permalink; } }