O termo de taxonomia no slug de URL não será encaminhado para o termo correto para postagem personalizada, como acontece com categorias padrão / postagens normais

então aviso quando escreve o URL de uma publicação com uma categoria (por exemplo, categoria5 / publicação), encaminhará automaticamente para a categoria correta no URL (por exemplo, as alterações da categoria5 para a categoria 1) se a categoria não corresponder à publicação.

Não consigo poder fazer isso com taxonomias e tipos de postagem personalizados.

Usando o plugin WP_Debug Eu tentei ver se isso era algo a ver com o pedido em si.

Request: argha/what/test-2 Query String: name=test-2&category_name=argha%2Fwhat Matched Rewrite Rule: (.+?)/([^/]+)(/[0-9]+)?/?$ Matched Rewrite Query: category_name=argha%2Fwhat&name=test-2&page= 

Não há problema lá. ele redireciona para esta consulta de reescrita, não importa o que eu digitei para a categoria. Aqui é o de minhas taxonomias e tipos de postagem personalizados.

 Request: my/technology/tablets/ipad Query String: name=ipad&post_type=my&mycategory=technology%2Ftablets Matched Rewrite Rule: my/(.+?)/(.+?)/([^/]+)/?$ Matched Rewrite Query: mycategory=technology%2Ftablets&post_type=my&name=ipad 

É praticamente idêntico, além do fato de eu ter que usar uma regra de reescrita diferente, pois o padrão não funcionou corretamente (não consegui visualizar as páginas de arquivo de taxonomia). Veja abaixo. O resto do site funciona perfeitamente com ele!

  $newRules['my/(.+?)/(.+?)/([^/]+)/?$'] = 'index.php?mycategory=$matches[1]%2F$matches[2]&post_type=my&name=$matches[3]'; $newRules['my/(.+)/?$'] = 'index.php?mycategory=$matches[1]'; 

EDITAR:

Registando meu tipo de postagem e taxonomia personalizados, usei esses valores para args.

  'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'my/%mycategory%', 'with_front' => true, 'pages' => true ), 'capability_type' => 'post', 'hierarchical' => true, 

e taxonomia

  'query_var' => true, 'show_ui' => true, 'has_archive' => true, 'show_tagcloud' => false, 'hierarchical' => true, 'with_front' => true, 'rewrite' => array( 'slug' => 'my', 'with_front' => true, 'hierarchical' => true 

Além das regras de reescrita, usei esse código (não tenho certeza de quão relevante é todo esse código).

 function filter_post_type_link($link, $post) { if ($post->post_type != 'my') return $link; if ($cats = get_the_terms($post->ID, 'mycategory')) { $link = str_replace('%mycategory%', get_taxonomy_parents(array_pop($cats)->term_id, 'mycategory', false, '/', true), $link); } return $link; } add_filter('post_type_link', 'filter_post_type_link', 10, 2); function get_taxonomy_parents($id, $taxonomy, $link = false, $separator = '/', $nicename = false, $visited = array()) { $chain = ''; $parent = &get_term($id, $taxonomy); if (is_wp_error($parent)) { return $parent; } if ($nicename) $name = $parent -> slug; else $name = $parent -> name; if ($parent -> parent && ($parent -> parent != $parent -> term_id) && !in_array($parent -> parent, $visited)) { $visited[] = $parent -> parent; $chain .= get_taxonomy_parents($parent -> parent, $taxonomy, $link, $separator, $nicename, $visited); } if ($link) { } else $chain .= $name . $separator; return $chain; } function restrict_things_by_category() { global $typenow; $post_type = 'my'; $taxonomy = 'mycategory'; if ($typenow == $post_type) { $selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : ''; $info_taxonomy = get_taxonomy($taxonomy); wp_dropdown_categories(array( 'show_option_all' => __("Show All {$info_taxonomy->label}"), 'taxonomy' => $taxonomy, 'name' => $taxonomy, 'orderby' => 'name', 'selected' => $selected, 'show_count' => true, 'hide_empty' => true, )); }; } add_action('restrict_manage_posts', 'restrict_things_by_category'); function convert_id_to_term_in_query($query) { global $pagenow; $post_type = 'my'; $taxonomy = 'mycategory'; $q_vars = &$query->query_vars; if ($pagenow == 'edit.php' && isset($q_vars['post_type']) && $q_vars['post_type'] == $post_type && isset($q_vars[$taxonomy]) && is_numeric($q_vars[$taxonomy]) && $q_vars[$taxonomy] != 0) { $term = get_term_by('id', $q_vars[$taxonomy], $taxonomy); $q_vars[$taxonomy] = $term->slug; } } add_filter('parse_query', 'convert_id_to_term_in_query'); 

Por favor, ajude porque isso está me deixando louco e a finalidade do site é que os usuários enviem conteúdo … não é categorizado no início, mas se eles o compartilham e torna-se categorizado depois ele precisa encaminhar para o URL correto … mais Estou pensando que isso pode prejudicar o SEO também?

Este código foi usado originalmente, então eu poderia ter URLs hierárquicos gerados. por exemplo

termo pai (example.com/my/parent/) mostra conteúdo relacionado ao termo pai incl. Todos os termos de criança termo infantil (example.com/my/parent/child) mostram conteúdo apenas dentro dessa publicação personalizada de termo infantil (example.com/my/parent/child/post/) é a publicação e qualquer nova postagem criada com o O termo filho ‘verificado’ gerará esse URL. senão ele irá gerar (example.com/my/%mycategory%/post), o que, obviamente, resulta em um 404 …

Aqui está o código da resposta anterior que ainda não parece funcionar – ainda não parece fazer alterações para wp_query, embora eu use “chave” para a matriz () detecta isso … mas não penso É o que eu estou procurando.

  function wpd_single_cpt_queries( $query ){ if( $query->is_singular() && $query->is_main_query() && isset( $query->query_vars['mycategory'] ) ){ $tax_query = array( array( 'taxonomy' => 'mycategory', 'field' => 'slug', 'terms' => $query->query_vars['mycategory'] ) ); $query->set( 'tax_query', $tax_query ); } } add_action( 'pre_get_posts', 'wpd_single_cpt_queries' ); 

Solutions Collecting From Web of "O termo de taxonomia no slug de URL não será encaminhado para o termo correto para postagem personalizada, como acontece com categorias padrão / postagens normais"