web-dev-qa-db-ja.com

カスタム投稿タイプと分類URLの書き換え

私はWordpress 3.5.1を使って私の個人的なウェブサイトのためのカスタムテーマを作成しています。 WordPressのカスタム投稿タイプと分類法に問題があります。詳細は次のとおりです。

  • カスタム投稿タイプ名:articles
  • 分類名:article-categories
  • slug:articlesを書き換えます(私のcptと同じ)

現在私のURLはこのようになっています:

  • example.com/articles - > archive-articles.php(動作します)

  • example.com/articles/taxo-parent - > taxonomy.php(動作します)

  • example.com/articles/taxo-child - > taxonomy.php(動作します)

  • example.com/articles/post-title - >私はsingle-articles.phpを使います、それは働きません

私のURLはこのようにして欲しいです。

  • example.com/articles

  • example.com/articles/taxo-parent

  • example.com/articles/taxo-parent/taxo-child

  • example.com/articles/taxo-parent/taxo-child/post-title

それはこのケースとGoogleからの検索/読書の記事を扱っている週ですが、それでもまだ運がありません、あなたたちが私を助けることができれば本当に感謝します。

ありがとう

編集:

私はWPカスタム投稿タイプUIプラグインを使用してカスタム投稿タイプとカスタム分類を作成します

6
TukangBeling

私は私のジュエリーポストタイプベローズコードを使用しました、あなたはちょうどあなたのポストタイプと分類法を置き換えることができます。関数ファイルにコピー&ペーストするだけです。

<?php

//Register a Jewelry post type.
function jewelry_post_register() {
    $labels = array(
        'name'               => _x( 'Jewelries', 'post type general name', 'twentytwelve' ),
        'singular_name'      => _x( 'Jewelry', 'post type singular name', 'twentytwelve' ),
        'menu_name'          => _x( 'Jewelries', 'admin menu', 'twentytwelve' ),
        'name_admin_bar'     => _x( 'Jewelry', 'add new on admin bar', 'twentytwelve' ),
        'add_new'            => _x( 'Add New', 'Jewelry', 'twentytwelve' ),
        'add_new_item'       => __( 'Add New Jewelry', 'twentytwelve' ),
        'new_item'           => __( 'New Jewelry', 'twentytwelve' ),
        'edit_item'          => __( 'Edit Jewelry', 'twentytwelve' ),
        'view_item'          => __( 'View Jewelry', 'twentytwelve' ),
        'all_items'          => __( 'All Jewelries', 'twentytwelve' ),
        'search_items'       => __( 'Search Jewelries', 'twentytwelve' ),
        'parent_item_colon'  => __( 'Parent Jewelries:', 'twentytwelve' ),
        'not_found'          => __( 'No Jewelries found.', 'twentytwelve' ),
        'not_found_in_trash' => __( 'No Jewelries found in Trash.', 'twentytwelve' )
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'jewelries' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => null,
        'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields' )
    );

    register_post_type( 'jewelry', $args );

}
add_action( 'init', 'jewelry_post_register' );


// create two taxonomies, Categories and writers for the post type "jewelry"
function create_jewelry_taxonomies() {
    // Add new taxonomy, make it hierarchical (like categories)
    $labels = array(
        'name'              => _x( 'Jewelry Categories', 'taxonomy general name' ),
        'singular_name'     => _x( 'Jewelry Category', 'taxonomy singular name' ),
        'search_items'      => __( 'Search Jewelry Categories' ),
        'all_items'         => __( 'All Jewelry Categories' ),
        'parent_item'       => __( 'Parent Jewelry Category' ),
        'parent_item_colon' => __( 'Parent Jewelry Category:' ),
        'edit_item'         => __( 'Edit Jewelry Category' ),
        'update_item'       => __( 'Update Jewelry Category' ),
        'add_new_item'      => __( 'Add New Jewelry Category' ),
        'new_item_name'     => __( 'New Jewelry Category Name' ),
        'menu_name'         => __( 'Jewelry Category' ),
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'jewelry-category' ),
    );

    register_taxonomy( 'jewelry-category', array( 'jewelry' ), $args );

}
add_action( 'init', 'create_jewelry_taxonomies', 0 );



function my_custom_template_include( $template ) {
    if ( get_query_var('post_type') == 'jewelry' ) {

        if ( is_single() ) {
            if ( $single = locate_template( array( 'single-jewelry.php') ) )
                return $single;
        }

    }
    return $template;
}

add_filter( 'template_include', 'my_custom_template_include' );
add_filter( 'template_include', 'insert_my_template' );

function insert_my_template( $template )
{
    if ( 'jewelry' === get_post_type() && !is_single() )
        return dirname( __FILE__ ) . '/archive-jewelry.php';


    return $template;
}


?>

あなたの質問によればそれはうまく私のサイトを動作します。

1
csehasib

custom post_type nameとtaxonomy slugを同じ名前にすることはできません。なぜなら、タクソノミを扱うときは、

example.com/articles/taxo-parent --> taxonomy.php

example.com/articles/taxo-child --> taxonomy.php

しかし、post_typeの記事では、同じURLを使います。

example.com/post_type/post_in_that_post_type_slug

そのため、初期URLはどちらの場合も同じなので、これは分類法とpost_typeのURLに矛盾があります。

example.com/post_type/ = example.com/articles/

example.com/taxonomy/ = example.com/articles/
1
ksr89

投稿タイプを登録したら、パーマリンクオプションを更新してください。

http://codex.wordpress.org/Function_Reference/flush_rewrite_rules

それはうまくいくはずです。

0
Fatih Toprak