以下でレンガの壁にぶつかる:
私は持っています:
cpt_community
という名前の1つのカスタム投稿タイプtax_community
という1つのカスタム分類法CPT登録で'rewrite' => true
を設定すると、このCPTのエントリへのパーマリンクはhttp://<domain>/cpt_community/test_item/
の形式になり、ブラウズすると404が表示されます。
'rewrite' => false
を設定した場合、パーマリンクはhttp://<domain>/?cpt_community=test_item/
であり、これはうまく機能します。
だから、私は明らかに間違った/ばかなことをしている - 質問は、何ですか?
[更新]
コード
CPT登録
function community_post_type() {
$labels = array('name' => 'Community');
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => false,
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'has_archive' => true,
'supports' => array('title','editor','excerpt','custom-fields','comments','revisions','thumbnail','author','page-attributes')
);
register_post_type('cpt_community', $args);
}
add_action( 'init', 'community_post_type' );
カスタム分類登録
function community_tax_type() {
register_taxonomy(
'tax_community',
'cpt_community',
array( 'hierarchical' => false,
'label' => 'Community Content Type',
'show_ui' => true,'query_var' => true,
'rewrite' => true,
'singular_label' => 'Community Content Type',
'capabilities' => array('assign_terms' => 'edit_community_tags')
)
);
# allow roles to add community taxonomy tags to a community CPT
$roles = array("subscriber","contributor","author","editor","administrator");
foreach ($roles as $role_name) {
$role = get_role($role_name);
$role->add_cap("edit_community_tags");
}
}
add_action( 'init', 'community_tax_type' );
書き換え規則をnewに設定するには関数flush_rewrite_rules()を使用してください。ただし、init-hookのコードではなく、アクティベーションプラグインまたはテーマにのみ使用してください。私の記事で詳細を参照してください。 http://wpengineer.com/2044/custom-post-type-and-permalink/ /
global $wp_rewrite;
$wp_rewrite->flush_rules();
フラッシュルール only 有効化(および無効化)時に。他のフックでそれをしないでください。
register_activation_hook()
Settings> Permalinksの順に進み、ルールをフラッシュしてください。コードは必要ありません。構造を更新する必要はありません。管理ページを開くだけで作業が完了します。