我已经创建了作为自定义帖子类型的投资组合。我想只为自定义帖子类型制作固定链接,例如:www.domain.com/custom-post-type-category/postname
目前的永久链接是:www.domain.com/custom-post-type/postname
它只是完全定制的帖子。
if(!function_exists("pexeto_register_portfolio_post_type")){
function pexeto_register_portfolio_post_type() {
//the labels that will be used for the portfolio items
$labels = array(
'name' => _x('Portfolio', 'portfolio name', 'pexeto'),
'singular_name' => _x('Portfolio Item', 'portfolio type singular name', 'pexeto'),
'add_new' => _x('Add New', 'portfolio', 'pexeto'),
'add_new_item' => __('Add New Item', 'pexeto'),
'edit_item' => __('Edit Item', 'pexeto'),
'new_item' => __('New Portfolio Item', 'pexeto'),
'view_item' => __('View Item', 'pexeto'),
'search_items' => __('Search Portfolio Items', 'pexeto'),
'not_found' => __('No portfolio items found', 'pexeto'),
'not_found_in_trash' => __('No portfolio items found in Trash', 'pexeto'),
'parent_item_colon' => ''
);
//register the custom post type
register_post_type( PEXETO_PORTFOLIO_POST_TYPE,
array( 'labels' => $labels,
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug'=>'portfolio'),
'taxonomies' => array('portfolio_category'),
'supports' => array('title', 'editor', 'thumbnail', 'comments', 'page-attributes') ) );
}
}
if(!function_exists("pexeto_register_portfolio_category")){
function pexeto_register_portfolio_category(){
register_taxonomy("portfolio_category",
array(PEXETO_PORTFOLIO_POST_TYPE),
array( "hierarchical" => true,
"label" => "Portfolio Categories",
"singular_label" => "Portfolio Categories",
"rewrite" => true,
"query_var" => true
));
}
}
答案 0 :(得分:0)
我建议您尝试以下操作将所有网址从:post-type:/:post-name:
更改为:post-category:/:post-name:
:
function portfolio_post_link($post_link, $post, $leavename) {
if($post->post_type == 'portfolio') {
$category_slug = get_the_terms($post->ID, 'portfolio_category');
$category_slug = is_array($category_slug) ? '/' . $category_slug[0]->slug . '/' : '/';
$post_link = str_replace('/'.$post->post_type.'/', $category_slug, $post_link);
}
return $post_link;
}
add_filter('post_type_link', 'portfolio_post_link', 10, 3);
但这还不够 - 你需要告诉自己如何处理这些新网址。我建议首先尝试上面的代码,看看你是否得到了这些新网址的404。如果是这样,您必须添加一些重写规则或使用pre_get_posts
操作。