自定义发布类型固定链接/重写不立即起作用

时间:2011-07-17 作者:anu

用以下物品撞击砖墙:

我有:

调用了1个自定义帖子类型cpt_communitytax_community如果我设置\'rewrite\' => true 在我的CPT注册中,该CPT条目的永久链接形式为http://<domain>/cpt_community/test_item/, 当我浏览到它时,我得到了一个404。

如果我设置\'rewrite\' => false, 那么permalinks是http://<domain>/?cpt_community=test_item/, 这个很好用。

所以,很明显我做错了/很愚蠢-问题是,什么?

[更新]

每次更改后,我都会通过进入设置>永久链接(并保存)刷新规则。在将所有内容都保持一个小时后,一切都开始正常工作了。为什么会延迟


Code

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\' );

2 个回复
SO网友:bueltge

使用函数flush\\u rewrite\\u rules()设置新的重写规则,但不要将代码放在init hook上,只能放在激活插件或主题上!在我的帖子中查看更多信息:http://wpengineer.com/2044/custom-post-type-and-permalink/

global $wp_rewrite;
$wp_rewrite->flush_rules();
仅在激活(和停用)时刷新规则。不要在任何其他钩子上做这件事。

register_activation_hook()

SO网友:Jukov

只需进入“设置”>“永久链接”即可刷新规则。不需要代码。您不需要更新结构,只需打开管理页面即可完成此任务

结束

相关推荐

curl problem or permalinks

我刚刚配置了我的VPS,我使用的是Centos,一切都很好,但如果我将永久链接设置为自定义结构,然后接受主页,没有帖子出现,它会显示404页,我想这是因为我没有启用curl,但我不知道我的php在哪里。我的centos中的ini文件?好的,我的卷曲被启用了,我检查过了phpinfo(); 这里是URLhttp://74.117.158.182/info.php但如果我在我的wordpress中设置了永久链接,那么接受主页,所有都会给我404页,你可以在这个URL上查看http://mbas.co.in如果