自定义帖子类型、分类和固定链接的问题

时间:2011-06-24 作者:Cyril

我在自定义帖子类型、分类法、永久链接和重写方面遇到了问题。

我使用以下代码创建了一个自定义的“recipes”帖子类型和分类:

add_action(\'init\', \'recipes_register\');
function recipes_register() {
$labels = array(
 \'name\' => __(\'Recipes\', \'framework\'),
 \'singular_name\' => __(\'Recipe\', \'framework\'),
 \'add_new\' => __(\'Add Recipe\', \'framework\'),
 \'add_new_item\' => __(\'Add New Recipe\', \'framework\'),
 \'edit_item\' => __(\'Edit Recipe\', \'framework\'),
 \'new_item\' => __(\'New Recipe\', \'framework\'),
 \'view_item\' => __(\'View Recipe\', \'framework\'),
 \'search_items\' => __(\'Search Recipe\', \'framework\'),
 \'not_found\' =>  __(\'Nothing found\', \'framework\'),
 \'not_found_in_trash\' => __(\'Nothing found in Trash\', \'framework\'),
 \'parent_item_colon\' => \'\'
);
$args = array(
 \'labels\' => $labels,
 \'public\' => true,
 \'publicly_queryable\' => true,
 \'show_ui\' => true,
 \'query_var\' => true,
 \'menu_icon\' => get_stylesheet_directory_uri() . \'/img/admin-recipes.png\',
 \'rewrite\' => true,
 \'capability_type\' => \'post\',
 \'hierarchical\' => true,
 \'menu_position\' => null,
 \'supports\' => array(\'title\',\'editor\',\'thumbnail\',\'comments\'),
  ); 
register_post_type( \'recipes\' , $args );
}

register_taxonomy(\'recipe_type\', array(\'recipes\'), array(\'hierarchical\' => true, \'label\' => __(\'Recipe Type\', \'framework\'), \'rewrite\' => array(\'hierarchical\' => true, \'slug\'=>\'recipes\')));
当我想使用这种URL访问自定义类型的帖子时,就会出现问题,它会抛出404错误:

http://my-website/recipes/name-of-the-recipe/
我认为问题是因为我想对分类法“recipe\\u type”和“recipe”自定义post类型使用相同的slug。

我对此有点困惑,如果你能帮我解决这个问题,我将不胜感激。

谢谢

1 个回复
最合适的回答,由SO网友:Milo 整理而成

如果您访问permalinks页面并保存,您的自定义帖子类型可能会正常工作,这将强制刷新重写规则。然而,您可能无法使用相同的slug来实现分类法,如果自定义帖子类型共享一个slug,它们似乎会取代分类法。无论如何,这可能会对性能造成很大影响,即使它确实有效,WP也必须为您创建的每个术语或帖子生成重写规则,或者为每个请求在两个不同的位置查找。

还有-您的register_taxonomy 应该封装在一个在init上调用的函数中,就像recipes_register 作用

结束

相关推荐

Custom Taxonomy Term Caching?

我有两种自定义帖子类型,“事件”和“机会”。它们共享一个自定义的层次分类法“位置”。我的客户添加了一些条款(美国(家长),然后是几个州(孩子))。我决定通过wp\\u insert\\u term添加其余的州来节省时间。这很有效!或者,看起来是这样。作为一名管理人员,这些条款对我来说很好。当我登录到一个“贡献者”帐户时,我可以去创建一个新的“机会”,所有的条件都如预期的那样显示出来。当要创建一个新的“事件”时,只会显示手工创建的术语。您可以通过“事件”在现场添加一个新术语,它在位置管理器中显示得很好。就好