【问题标题】:Custom post type with category results in error带有类别的自定义帖子类型会导致错误
【发布时间】:2017-08-04 03:56:04
【问题描述】:

我不知道我做错了什么。我有一个名为models 的自定义帖子类型。在此自定义帖子类型中,我还注册了自定义分类法。此自定义分类法用于类别。但我每次都会收到 404 错误。

这就是我创建自定义帖子类型的方式:

$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,我需要将类别更改为其他内容。 上面更新的代码有改动。

【问题讨论】:

  • 您是否进入“设置”并单击“保存永久链接”按钮?您实际上不必更改任何内容,只需单击按钮,然后重试
  • 您是否在致电register_taxonomy_for_object_type()之前注册您的分类?
  • @JakeParis 不,我没有。
  • 我不是 100% 确定,但是您可以尝试相同的代码,但只需将新的分类法从 category 更改为其他内容吗?这可能行得通。
  • @AmitJoshi 你是今天的英雄!!我会用你的解决方案更新我的问题。

标签: php wordpress custom-post-type taxonomy


【解决方案1】:

是的,您尝试使用保留术语 category 注册自定义分类。这就是它不起作用的原因。

【讨论】:

    【解决方案2】:

    通常在添加新的重写时(例如在插件或主题中添加新分类时可能会这样做),您需要刷新重写规则。如果不这样做,您将在尝试访问新的分类或自定义帖子类型时遇到 404 错误。

    重建/刷新重写的最简单方法是转到设置 > 永久链接并点击“保存更改”按钮。您无需进行任何更改,只需点击保存即可。

    【讨论】:

    • 感谢您的回答,但我什么都试过了。也是你的解决方案。我什至尝试过flush_rewrite_rules(true); 通常我不会问这种问题,因为我知道如何在 WordPress 中编写代码。但是我看不到我做错了什么......
    【解决方案3】:

    解决方案感谢更新代码下方的@AmitJoshi。

    这就是我创建自定义帖子类型的方式:

    $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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多