自定义帖子类型永久链接返回404

时间:2011-05-04 20:37:14

标签: php wordpress wordpress-theming permalinks

通过搜索支持论坛和博客,我发现除了我自己之外,很少有人在使用自定义帖子类型和永久链接方面遇到困难。

我的自定义帖子类型(日记)注册正常,所有在管理员方面都显示正常。如果您在前端搜索它,它将显示在搜索结果中。但是当我点击日记帖子时,我得到了404。

我的代码:

register_post_type( 'diary_post',
  array(
    'labels' => array(
      'name' => __( 'Diary Post' ),
      'singular_name' => __( 'Diary Post' ),
      'add_new' => _x('Add New'),
      'add_new_item' => __('Add New Diary Post'),
      'edit_item' => __('Edit Diary Post'),
      'new_item' => __('New Diary Post'),
      'view_item' => __('View Diary Post'),
      'search_items' => __('Search Diary Posts'),
      'not_found' =>  __('No Diary posts found'),
      'not_found_in_trash' => __('No Diary posts found in Trash'), 
      'parent_item_colon' => ''
    ),
    'description' => __( 'Posts to appear on the Diary page' ),
    'public' => true,
    'publicly_queryable' => false,
    'exclude_from_search' => false,
    'query_var' => true,
    'menu_position' => 4,
    'supports' => array('title','editor','author','excerpt','thumbnail', 'custom-fields','comments','trackbacks','revisions'),
    'taxonomies' => array( 'diary_post_type','post_tag'),
    'has_archive' => true,
    'rewrite' => array( 'slug' => 'diary','with_front' => false)
  )
);

我已尝试过各种帖子中的以下建议解决方案,但没有取得任何成功:

  • 重新保存永久链接更改
  • '重写'只是'真''两个
  • 'with_front'=>假和
  • 'with_front'=> true添加
  • flush_rewrite_rules();之后
  • register_post_type
  • 检查没有名为'diary'的页面或帖子

即使我尝试通过默认永久链接结构(例如http://localhost/?diary_post=my-title-here)访问帖子,我也没有成功。

我网站的永久链接结构目前为/%year%/%postname% - 将其更改为默认设置也无济于事。

任何线索?我的智慧结束了。

3 个答案:

答案 0 :(得分:3)

publicly_queryable需要成立,但如果您设置exclude_from_search,则可能不需要它(或public)。请参阅codex:http://codex.wordpress.org/Function_Reference/register_post_type#Arguments

答案 1 :(得分:2)

这是帮助那些可能遇到与我相同问题的人的另一个答案......

如果您最近创建了新的CPT,则可能需要进入设置>永久链接,然后再次点击保存更改。这允许任何新的重写规则生效。

答案 2 :(得分:0)

您应该为参数添加“_builtin”属性。

function rw_portfolio_register(){
    $args = array(
        'label' => __('Portfolio'),
        'singular_label' => __('Portfolio'),
        'public' => true,
        'show_ui' => true,
        '_builtin' => false,
        'capability_type' => 'post',
        'hierarchical' => false,
        'rewrite' => array("slug" => "project"),
        'supports' => array('title', 'editor')//Boxes will be showed in the panel
       );

    register_post_type( 'rw_portfolio' , $args );
}