用分类术语重写自定义帖子类型的永久链接?


16

我正在尝试wr_events使用以其custom_taxonomy术语之一命名的custom_post_type重写我的网址event_type

add_action('init', 'wr_events');

function wr_events() {

     register_taxonomy(
        'event_type',
        'wr_event',
        array(
            'label' => 'Types',
            'singular_label' => 'Typ',
            'hierarchical' => true,
            'query_var' => true,
            'rewrite' => array('slug' => 'events'),
        )
    );

    $labels = array(
        'name' => _x('Events', 'post type general name'),
        'singular_name' => _x('Event', 'post type singular name')
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'query_var' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array('title','editor','thumbnail', 'excerpt'),
        'rewrite' => array(
            //'slug' => 'event',
            'slug' => 'events/%event%',
            'with_front' => false
        ),
        'has_archive' => 'events'
    ); 

    register_post_type( 'wr_event' , $args );
    flush_rewrite_rules();
}

add_action('save_post', 'save_details');

add_filter('post_type_link', 'events_permalink_structure', 10, 4);
function events_permalink_structure($post_link, $post, $leavename, $sample)
{
    if ( false !== strpos( $post_link, '%event%' ) ) {
        $event_type_term = get_the_terms( $post->ID, 'event_type' );
        $post_link = str_replace( '%event%', array_pop( $event_type_term )->slug, $post_link );
    }
    return $post_link;
}

因此,在我的情况下,我的分类法术语是“车间”或“讲座”等。 url/events/lectures或者url/events/workshops列出了我与此“类别”相关的所有帖子,url/events显示了我所有活动的自定义存档。->这就是我想要的,但是唯一不起作用的是自定义帖子本身的完整网址……

url/events/lectures/post-name -抛出404!

知道为什么会这样吗?我的events_permalink_structure()函数似乎可以正常工作,因为它以我想要的方式取代了我的永久链接。

我安装了“重写分析器”插件,它显示的 “正则表达式为空” wr_event

我还尝试通过访问永久链接设置刷新“重写规则”。但是没有效果。

Answers:


10

将所有%event%更改为%event_type%。希望对您有用。


非常非常感谢你!太棒了!没有得到它,但它有效:)
mathiregister

2
@mathiregister-这是因为WP无法自动理解标记%event%,但它确实知道%event_type%与您的事件类型分类法相对应。
史蒂芬·哈里斯

现在,我有了带有slug的自定义帖子类型,/catalog/它可以显示所有帖子,以slug 来显示/katalog/whatever/自定义分类法中的帖子,无论如何,并/katalog/whatever/mypost显示属于分类法的单个帖子。只需%event%在您的自定义分类名称上方添加代码,而不是在代码中输入%%
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.