benutzerdefinierte Taxonomie und benutzerdefinierter Post-Typ-URL-Konflikt

Ich habe eine ernsthafte URL Problem.

Es gibt Nachrichten benutzerdefinierte Post-Typ. es ist Schnecke ist Nachrichten .

Nachrichten Taxonomie slug: news_category

Die URL der Nachrichtentaxonomie lautet: http://domain.com/news_category/press-release

Ich möchte die URL der news_category zu News News ändern.

so URL der Nachrichten Taxonomie wäre:

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

Ich habe versucht, die Nachricht news_category in news umzuschreiben, aber das verursacht Konfliktprobleme. Nachrichten zeigen Nachrichten URL, aber alle Posts von Nachrichten Post-Typ werden 404 nicht gefunden

Beitrags-URL:

  http://domain.com/news/POST_TITLE 

als posts url enthalten auch die News Slug beide Konflikte. 404 Fehler bekommen.

ist es möglich, es zu beheben? wie kann ich es reparieren?

jede Hilfe würde sehr geschätzt werden.

Solutions Collecting From Web of "benutzerdefinierte Taxonomie und benutzerdefinierter Post-Typ-URL-Konflikt"

Probieren Sie diesen Code aus. Es kann dir helfen.

  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; } }