邮政类型&分类学同样的slu issue问题

时间:2014-08-08 11:08:15

标签: php wordpress custom-post-type taxonomy

我正在研究post_type和分类法。我为其主页面创建了一个页面模板“foo_template.php”,在主页面中我编写了一个查询,显示所有分类法和相关的(5)五个帖子。当我点击任何分类法时,新页面打开并显示点击分类的所有帖子标题及其slug是“foo_taxonomy”,我还为它创建了一个页面“taxonomy-foo_post.php”,当我点击任何标题时,它继续我为它创建的单页“single-foo_post.php”,它的slug是“foo_post”。

现在主要的问题是我想要这样的帖子类型和分类法slug是相同的当我这样做我的页面布局受到干扰,它转到archive.php

我的朋友给我写了一些代码,其中post_type和taxonomy slug是相同的,当我点击分类法页面打开时使用新的相同slug但是当我点击单页的帖子标题时它显示“Page没找到“

我没有得到什么问题。

这是我的代码:

发布类型和分类代码:

add_action('init', 'foo_articles');
function foo_articles() {
    register_post_type('foo_knowledgebase', array(
        'labels' => array(
            'name' => 'Articles',
            'singular_name' => 'Article'
        ),
        'public' => true,
        'rewrite' => array(
            'slug' => 'My_slug')
    ));
}

add_action( 'init', 'foo_taxonomies', 0 );
function foo_taxonomies() {
    register_taxonomy('foo_taxonomy', array('My_slug'), array(
        'labels' => array(
            'name' => 'Articles Category'
        ),
        'show_ui' => true,
        'show_admin_column' => true,
        'show_tagcloud' => FALSE,
        'hierarchical' => true,
        'rewrite' => array('slug' => 'My_slug', 'with_front' => TRUE)
    ));
}

对于相同的slug代码:

$rules = array();
    $taxonomies = get_taxonomies(array('_builtin' => false), 'objects');
    $post_types = get_post_types(array('public' => true, '_builtin' => false), 'names');

    foreach ($post_types as $post_type) {
        $post_type_data = get_post_type_object( $post_type );
        $post_type_slug = $post_type_data->rewrite['slug'];

        foreach ($taxonomies as $taxonomy) {
            if ($taxonomy->object_type[0] == $post_type_slug) {
                    $categories = get_categories(array('type' => $post_type_slug, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0));
                    /* @var $category type */
                    foreach ($categories as $category) {
                        $rules[$post_type_slug . '/' . $category->slug . '/?$'] = 'index.php?' . $category->taxonomy . '=' . $category->slug;
                    }
            }
        }
    }
    $wp_rewrite->rules = $rules + $wp_rewrite->rules;
}
add_filter( 'generate_rewrite_rules', 'taxonomy_slug_rewrite' );

我的朋友说这段代码适合他,但我现在不会发生什么,我复制相同的代码。

此条件也设置为

if ($taxonomy->object_type[0] == $post_type_slug)

但我不知道为什么我的slu not不起作用。

请帮帮我

1 个答案:

答案 0 :(得分:2)

对于您想要实现的目标,您需要在自定义帖子类型之前定义自定义分类。 这种方式可行,但万一你的分类标准和你的帖子将有相同的slug,无法查看该条目。

e.g。如果你有一个名为&#34的分类术语,请按"以及标题为#34的CPT;按"。