web-dev-qa-db-ja.com

カスタム投稿タイプパーマリンク/書き換えがすぐに機能しない

以下でレンガの壁にぶつかる:

私は持っています:

  • 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/であり、これはうまく機能します。

だから、私は明らかに間違った/ばかなことをしている - 質問は、何ですか?

[更新]

  • すべての変更の後、私はSettings> Permalinks(そしてsave)に行くことでルールをフラッシュします。
  • 1時間放置した後、物事は正しく機能し始めました。

コード

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' );
8
anu

書き換え規則を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()
6
bueltge

Settings> Permalinksの順に進み、ルールをフラッシュしてください。コードは必要ありません。構造を更新する必要はありません。管理ページを開くだけで作業が完了します。

4
Jukov