对自定义帖子类型使用内置类别

时间:2016-05-26 03:57:06

标签: php wordpress

我们可以为自定义帖子类型使用内置类别吗?以及如何访问新自定义帖子类型的类别页面(url)。

3 个答案:

答案 0 :(得分:1)

是的,您可以在自定义帖子类型中添加内置类别。

只需将以下代码添加到functions.php文件

即可
add_action( 'init', 'add_category_taxonomy_to_custom_post' );
function add_category_taxonomy_to_custom_post() {
    register_taxonomy_for_object_type( 'category', 'custom_post' );
}

其中custom_post是帖子类型键。

答案 1 :(得分:0)

为自定义帖子类型使用内置类别

答案 2 :(得分:0)

真正的解决方案是将CTP slug设置为“slug /%category%”

然后更新CPT永久链接 (将以下代码放在functions.php中)

add_filter('post_link', 'category_permalink', 1, 3);
add_filter('post_type_link', 'category_permalink', 1, 3);


function category_permalink($permalink, $post_id, $leavename) {
    //con %category% catturo il rewrite del Custom Post Type
    if (strpos($permalink, '%category%') === FALSE) return $permalink;
        // Get post
        $post = get_post($post_id);
        if (!$post) return $permalink;

        // Get taxonomy terms
        $terms = wp_get_object_terms($post->ID, 'category');
        if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0]))
            $taxonomy_slug = $terms[0]->slug;
        else $taxonomy_slug = 'no-category';

    return str_replace('%category%', $taxonomy_slug, $permalink);
}

在category.php的顶部,添加一个支票

$segments = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'));
//print_r($segments);
if($segments[1] == 'CPT Slug'){ //Change CPT Slug to your own slug
//Show CPT posts
}else{
//General posts
}