分類用語を使用してカスタム投稿タイプのパーマリンクを書き換えますか?


16

私はwr_events、custom_taxonomy用語の1つで名前が付けられたcustom_post_typeのURLを書き換えようとしています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です...

url/events/lectures/post-name -404を投げます!

なぜこれが起こっているのでしょうか?私のevents_permalink_structure()機能はパーマリンクを私が望むように置き換えるので、正しく機能しているようです。

私は「書き換えアナライザ」プラグインをインストールし、それが私を示しための「正規表現が空です」wr_event

また、パーマリンク設定にアクセスして、書き換えルールをフラッシュしようとしました。ただし、効果はありません。

回答:


10

すべての%event%を%event_type%に変更します。それがあなたの役に立つことを願っています。


本当にありがとう!驚くばかり!それを取得しないでください:)
mathiregister

2
@mathiregister-WPはタグ%event%を自動的に理解しないが、%event_type%はイベントタイプの分類に対応することを理解するためです。
スティーブンハリス

今、私は/catalog/すべての投稿を表示するスラッグを持つカスタム投稿タイプを持ち、スラッグを含む/katalog/whatever/カスタム分類で投稿を表示し、分類/katalog/whatever/mypostに属する単一の投稿を表示します。%event%カスタム分類名の上のコードではなく%%
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.