带有类别的自定义 post 类型导致错误
Custom post type with category results in error
我不知道我做错了什么。我有一个名为 models
的自定义 post 类型。在这个自定义 post 类型中,我还注册了一个自定义分类法。此自定义分类法用于类别。但是我每次都会收到 404 错误。
这就是我创建自定义 post 类型的方式:
$labels = array(
'name' => __('Modellen', 'models'),
'singular_name' => __('Model', 'models'),
'add_new' => __('Nieuwe toevoegen', 'models'),
'add_new_item' => __('Nieuw model', 'models'),
'edit_item' => __('Model bewerken', 'models'),
'new_item' => __('Nieuw model', 'models'),
'view_item' => __('Model bekijken', 'models'),
'search_items' => __('Model zoeken', 'models'),
'not_found' => __('Niks gevonden', 'models'),
'not_found_in_trash' => __('Niks gevonden in de prullenbak', 'models'),
'parent_item_colon' => __('Model', 'models'),
'menu_name' => __('Modellen', 'models'),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'supports' => array('title', 'page-attributes', 'editor', 'excerpt', 'author', 'thumbnail', 'custom-fields', 'revisions'),
//'taxonomies' => array('category'), // Old
//'taxonomies' => array('category'), // New not used any more
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 20,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => false,
'capability_type' => 'post',
);
register_post_type('models', $args);
//register_taxonomy_for_object_type('category', 'models'); // Old
//register_taxonomy_for_object_type('category', 'models'); // New not used any more
这就是我创建自定义分类的方式:
$labels = array(
'name' => _x('Categorieën', 'taxonomy general name', 'textdomain'),
'singular_name' => _x('Categorie', 'taxonomy singular name', 'textdomain'),
'search_items' => __('Zoek Categorieën', 'textdomain'),
'all_items' => __('All Categorieën', 'textdomain'),
'parent_item' => __('Hoofd categorie', 'textdomain'),
'parent_item_colon' => __('Hoofd categorie:', 'textdomain'),
'edit_item' => __('Bewerk categorie', 'textdomain'),
'update_item' => __('Update Categorie', 'textdomain'),
'add_new_item' => __('Nieuwe categorie', 'textdomain'),
'new_item_name' => __('Nieuwe categorie naam', 'textdomain' ),
'menu_name' => __('Categorieën', 'textdomain'),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_rest' => false,
'show_tagcloud' => false,
'show_in_quick_edit' => true,
'show_admin_column' => false,
'rewrite' => array('slug' => 'models', 'hierarchical' => true),
);
//register_taxonomy('category', array('models'), $args); // Old
register_taxonomy('cat_models', array('models'), $args); // New
谢谢!
编辑:
也许值得一提:
- 我在自己的自定义插件中执行代码。
- 我使用默认的 Twenyseventeen 主题
- WordPress 4.8
解法:
感谢@AmitJoshi,我需要将类别更改为其他类别。
在更新后的代码上方进行了更改。
通常在添加新的重写时(例如您在插件或主题中添加新的分类时可能会做的),您需要刷新重写规则。如果不这样做,您将在尝试访问新分类法或自定义 post 类型时 运行 出现 404 错误。
rebuild/refresh 重写的最简单方法是转到 设置 > 永久链接 并单击 "Save Changes" 按钮。您不必进行任何更改,只需点击保存即可。
是的,您正在尝试使用保留字词 category
注册自定义分类法。这就是它不起作用的原因。
解决方案归功于更新代码下方的@AmitJoshi。
这就是我创建自定义 post 类型的方式:
$labels = array(
'name' => __('Modellen', 'models'),
'singular_name' => __('Model', 'models'),
'add_new' => __('Nieuwe toevoegen', 'models'),
'add_new_item' => __('Nieuw model', 'models'),
'edit_item' => __('Model bewerken', 'models'),
'new_item' => __('Nieuw model', 'models'),
'view_item' => __('Model bekijken', 'models'),
'search_items' => __('Model zoeken', 'models'),
'not_found' => __('Niks gevonden', 'models'),
'not_found_in_trash' => __('Niks gevonden in de prullenbak', 'models'),
'parent_item_colon' => __('Model', 'models'),
'menu_name' => __('Modellen', 'models'),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'supports' => array('title', 'page-attributes', 'editor', 'excerpt', 'author', 'thumbnail', 'custom-fields', 'revisions'),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 20,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => false,
'capability_type' => 'post',
);
register_post_type('models', $args);
这是我创建自定义分类的方式:
$labels = array(
'name' => _x('Categorieën', 'taxonomy general name', 'textdomain'),
'singular_name' => _x('Categorie', 'taxonomy singular name', 'textdomain'),
'search_items' => __('Zoek Categorieën', 'textdomain'),
'all_items' => __('All Categorieën', 'textdomain'),
'parent_item' => __('Hoofd categorie', 'textdomain'),
'parent_item_colon' => __('Hoofd categorie:', 'textdomain'),
'edit_item' => __('Bewerk categorie', 'textdomain'),
'update_item' => __('Update Categorie', 'textdomain'),
'add_new_item' => __('Nieuwe categorie', 'textdomain'),
'new_item_name' => __('Nieuwe categorie naam', 'textdomain' ),
'menu_name' => __('Categorieën', 'textdomain'),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_rest' => false,
'show_tagcloud' => false,
'show_in_quick_edit' => true,
'show_admin_column' => false,
'rewrite' => array('slug' => 'models', 'hierarchical' => true),
);
register_taxonomy('cat_models', array('models'), $args);
我不知道我做错了什么。我有一个名为 models
的自定义 post 类型。在这个自定义 post 类型中,我还注册了一个自定义分类法。此自定义分类法用于类别。但是我每次都会收到 404 错误。
这就是我创建自定义 post 类型的方式:
$labels = array(
'name' => __('Modellen', 'models'),
'singular_name' => __('Model', 'models'),
'add_new' => __('Nieuwe toevoegen', 'models'),
'add_new_item' => __('Nieuw model', 'models'),
'edit_item' => __('Model bewerken', 'models'),
'new_item' => __('Nieuw model', 'models'),
'view_item' => __('Model bekijken', 'models'),
'search_items' => __('Model zoeken', 'models'),
'not_found' => __('Niks gevonden', 'models'),
'not_found_in_trash' => __('Niks gevonden in de prullenbak', 'models'),
'parent_item_colon' => __('Model', 'models'),
'menu_name' => __('Modellen', 'models'),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'supports' => array('title', 'page-attributes', 'editor', 'excerpt', 'author', 'thumbnail', 'custom-fields', 'revisions'),
//'taxonomies' => array('category'), // Old
//'taxonomies' => array('category'), // New not used any more
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 20,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => false,
'capability_type' => 'post',
);
register_post_type('models', $args);
//register_taxonomy_for_object_type('category', 'models'); // Old
//register_taxonomy_for_object_type('category', 'models'); // New not used any more
这就是我创建自定义分类的方式:
$labels = array(
'name' => _x('Categorieën', 'taxonomy general name', 'textdomain'),
'singular_name' => _x('Categorie', 'taxonomy singular name', 'textdomain'),
'search_items' => __('Zoek Categorieën', 'textdomain'),
'all_items' => __('All Categorieën', 'textdomain'),
'parent_item' => __('Hoofd categorie', 'textdomain'),
'parent_item_colon' => __('Hoofd categorie:', 'textdomain'),
'edit_item' => __('Bewerk categorie', 'textdomain'),
'update_item' => __('Update Categorie', 'textdomain'),
'add_new_item' => __('Nieuwe categorie', 'textdomain'),
'new_item_name' => __('Nieuwe categorie naam', 'textdomain' ),
'menu_name' => __('Categorieën', 'textdomain'),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_rest' => false,
'show_tagcloud' => false,
'show_in_quick_edit' => true,
'show_admin_column' => false,
'rewrite' => array('slug' => 'models', 'hierarchical' => true),
);
//register_taxonomy('category', array('models'), $args); // Old
register_taxonomy('cat_models', array('models'), $args); // New
谢谢!
编辑:
也许值得一提:
- 我在自己的自定义插件中执行代码。
- 我使用默认的 Twenyseventeen 主题
- WordPress 4.8
解法: 感谢@AmitJoshi,我需要将类别更改为其他类别。 在更新后的代码上方进行了更改。
通常在添加新的重写时(例如您在插件或主题中添加新的分类时可能会做的),您需要刷新重写规则。如果不这样做,您将在尝试访问新分类法或自定义 post 类型时 运行 出现 404 错误。
rebuild/refresh 重写的最简单方法是转到 设置 > 永久链接 并单击 "Save Changes" 按钮。您不必进行任何更改,只需点击保存即可。
是的,您正在尝试使用保留字词 category
注册自定义分类法。这就是它不起作用的原因。
解决方案归功于更新代码下方的@AmitJoshi。
这就是我创建自定义 post 类型的方式:
$labels = array(
'name' => __('Modellen', 'models'),
'singular_name' => __('Model', 'models'),
'add_new' => __('Nieuwe toevoegen', 'models'),
'add_new_item' => __('Nieuw model', 'models'),
'edit_item' => __('Model bewerken', 'models'),
'new_item' => __('Nieuw model', 'models'),
'view_item' => __('Model bekijken', 'models'),
'search_items' => __('Model zoeken', 'models'),
'not_found' => __('Niks gevonden', 'models'),
'not_found_in_trash' => __('Niks gevonden in de prullenbak', 'models'),
'parent_item_colon' => __('Model', 'models'),
'menu_name' => __('Modellen', 'models'),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'supports' => array('title', 'page-attributes', 'editor', 'excerpt', 'author', 'thumbnail', 'custom-fields', 'revisions'),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 20,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => false,
'capability_type' => 'post',
);
register_post_type('models', $args);
这是我创建自定义分类的方式:
$labels = array(
'name' => _x('Categorieën', 'taxonomy general name', 'textdomain'),
'singular_name' => _x('Categorie', 'taxonomy singular name', 'textdomain'),
'search_items' => __('Zoek Categorieën', 'textdomain'),
'all_items' => __('All Categorieën', 'textdomain'),
'parent_item' => __('Hoofd categorie', 'textdomain'),
'parent_item_colon' => __('Hoofd categorie:', 'textdomain'),
'edit_item' => __('Bewerk categorie', 'textdomain'),
'update_item' => __('Update Categorie', 'textdomain'),
'add_new_item' => __('Nieuwe categorie', 'textdomain'),
'new_item_name' => __('Nieuwe categorie naam', 'textdomain' ),
'menu_name' => __('Categorieën', 'textdomain'),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_rest' => false,
'show_tagcloud' => false,
'show_in_quick_edit' => true,
'show_admin_column' => false,
'rewrite' => array('slug' => 'models', 'hierarchical' => true),
);
register_taxonomy('cat_models', array('models'), $args);