在这篇文章中,我将向您展示如何从WordPress分类URL中删除«category»,如何从文章标签URL中删除«tag»,以及如何从分类法URL中删除自定义分类别名。如(«product_cat»):这是主要部分的代码,您可以将其插入您当前的主题functions.php中即可,如果添加代码后没有生效。请到wordpress后台,设置。固定链接页面保存一次就行了。
add_filter('request', 'rudr_change_term_request', 1, 1 ); function rudr_change_term_request($query){ $tax_name = 'product_cat'; // specify you taxonomy name here, it can be also 'category' or 'post_tag' // Request for child terms differs, we should make an additional check if( $query['attachment'] ) : $include_children = true; $name = $query['attachment']; else: $include_children = false; $name = $query['name']; endif; $term = get_term_by('slug', $name, $tax_name); // get the current term to make sure it exists if (isset($name) && $term && !is_wp_error($term)): // check it here if( $include_children ) { unset($query['attachment']); $parent = $term->parent; while( $parent ) { $parent_term = get_term( $parent, $tax_name); $name = $parent_term->slug . '/' . $name; $parent = $parent_term->parent; } } else { unset($query['name']); } switch( $tax_name ): case 'category':{ $query['category_name'] = $name; // for categories break; } case 'post_tag':{ $query['tag'] = $name; // for post tags break; } default:{ $query[$tax_name] = $name; // for another taxonomies break; } endswitch; endif; return $query; } add_filter( 'term_link', 'rudr_term_permalink', 10, 3 ); function rudr_term_permalink( $url, $term, $taxonomy ){ $taxonomy_name = 'product_cat'; // your taxonomy name here $taxonomy_slug = 'product_cat'; // the taxonomy slug can be different with the taxonomy name (like 'post_tag' and 'tag' ) // exit the function if taxonomy slug is not in URL if ( strpos($url, $taxonomy_slug) === FALSE || $taxonomy != $taxonomy_name ) return $url; $url = str_replace('/' . $taxonomy_slug, '', $url); return $url; }
当然。如果你是正式使用的网站更改了网址,请记得做301跳转。下面是代码。将其插入您当前的主题functions.php中即可。
add_action('template_redirect', 'rudr_old_term_redirect'); function rudr_old_term_redirect() { $taxonomy_name = 'product_cat'; $taxonomy_slug = 'product_cat'; // exit the redirect function if taxonomy slug is not in URL if( strpos( $_SERVER['REQUEST_URI'], $taxonomy_slug ) === FALSE) return; if( ( is_category() && $taxonomy_name=='category' ) || ( is_tag() && $taxonomy_name=='post_tag' ) || is_tax( $taxonomy_name ) ) : wp_redirect( site_url( str_replace($taxonomy_slug, '', $_SERVER['REQUEST_URI']) ), 301 ); exit(); endif; }
- 提示:这篇文章发布于 2020/05/24,作者 99839,总计 2112 字.
- 原文: 教程:从网址中删除分类法别名(分类,标签和自定义分类法等) | 爱壹主题