使用Custom Post Type UI后去除url中的分类别名前缀
Custom Post Type UI插件是一个添加文章类型的插件,但在使用过程中有文章类型别名和分类目录别名,虽然插件中有去除的功能设置,但在目前的版本是无效的,在做优化的时候需要去除这些。下面讲下怎么去除这2类别名前缀。
一、文章类型前缀去除
此文章类型前缀在添加/编辑文章类型处添加,在分类目录名前显示,去除方法:使用Remove CPT base插件,在设置中勾选添加的文章类型即可。
二、去除文章详情地址前的分类别名前缀
此分类别名前缀在添加/编辑分类处添加,在分类详情页url所属分类前显示。
去除方法1:仅一个分类
add_filter(‘request’, ‘rudr_change_term_request’, 1, 1 );
function rudr_change_term_request($query){
$tax_name = ‘product_cat’; // 在此处指定您的分类名称,也可以是“ category”或“ post_tag”
// 要求子类的条件有所不同,我们应该进行额外的检查
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); // 获取当前别名以确保它存在
if (isset($name) && $term && !is_wp_error($term)): // 在此检查
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; // 分类
break;
}
case ‘post_tag’:{
$query[‘tag’] = $name; // 标签
break;
}
default:{
$query[$tax_name] = $name; // 其它
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’; // 您的分类名称
$taxonomy_slug = ‘product_cat’; // 别名与分类名称可以不同(例如’post_tag’和’tag’)
// 如果URL中没有分类别名,则退出函数
if ( strpos($url, $taxonomy_slug) === FALSE || $taxonomy != $taxonomy_name ) return $url;
$url = str_replace(‘/’ . $taxonomy_slug, ”, $url);
return $url;
}
去除方法2:同时去除多个分类
function rudr_change_term_request($query_vars){
$tax_names = array(‘aktiviteettityyppi’,’tapahtumatyyppi’,’kohdetyyppi’,’palvelutyyppi’,’palveluluokka’); // 在此处指定您的分类名称,也可以是“ category”或“ post_tag”
if( isset($query_vars[‘attachment’]) ? $query_vars[‘attachment’] : null) :
$include_children = true;
$name = $query_vars[‘attachment’];
else:
if( isset($query_vars[‘name’]) ? $query_vars[‘name’] : null) {
$include_children = false;
$name = $query_vars[‘name’];
}
endif;
if (isset($name)):
foreach ($tax_names as $tax_name) {
$term = get_term_by(‘slug’, $name, $tax_name);
if ($term && !is_wp_error($term)):
if( $include_children ) {
unset($query_vars[‘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_vars[‘name’]);
}
$query_vars[$tax_name] = $name;
endif;
}
endif;
return $query_vars;
}
add_filter(‘request’, __NAMESPACE__ . ‘\\rudr_change_term_request’, 1, 1 );
function rudr_term_permalink( $url, $term, $taxonomy ){
$taxonomy_slugs = array(‘aktiviteettityyppi’,’tapahtumatyyppi’,’kohdetyyppi’,’palvelutyyppi’,’palveluluokka’);
foreach ($taxonomy_slugs as $taxonomy_slug) {
if ( stripos($url, $taxonomy_slug) === TRUE || $taxonomy == $taxonomy_slug ) {
$url = str_replace(‘/’ . $taxonomy_slug, ”, $url);
}
}
return $url;
}
add_filter( ‘term_link’, __NAMESPACE__ . ‘\\rudr_term_permalink’, 10, 3 );
上面2次出现的array(‘aktiviteettityyppi’,’tapahtumatyyppi’,’kohdetyyppi’,’palvelutyyppi’,’palveluluokka’)中红色的即是需要替换的分类别名