当前位置: 首页 > 知识库问答 >
问题:

Wordpress:自定义分类未显示在“管理”列中

司徒墨竹
2023-03-14

我不知道为什么自定义文章类型的自定义分类不显示在管理列中(它消失了)。

以下是始终有效的代码:

class SEW_SERVICE
{

    function __construct() {
        add_action( 'init',  array($this, 'init') );
    }

    function init() {
        $this->taxonomies();
        $this->custom_posts();
    }

    function taxonomies() {
        $labels = array(
            'name' => __( 'Categorie Servizi', SEWCL_TEXT_DOMAIN ),
            'singular_name' => __( 'Categoria Servizio', SEWCL_TEXT_DOMAIN ),
            'search_items' => __( 'Search Menu Sections', SEWCL_TEXT_DOMAIN ),
            'all_items' => __( 'Tutte le categorie', SEWCL_TEXT_DOMAIN ),
            'parent_item' => __( 'Categoria', SEWCL_TEXT_DOMAIN ),
            'parent_item_colon' => __( 'Categoria Servizio:', SEWCL_TEXT_DOMAIN ),
            'edit_item' => __( 'Modifica Categoria Servizio', SEWCL_TEXT_DOMAIN ),
            'update_item' => __( 'Aggiorna Categoria Servizio', SEWCL_TEXT_DOMAIN ),
            'add_new_item' => __( 'Aggiungi Nuova Categoria', SEWCL_TEXT_DOMAIN ),
            'new_item_name' => __( 'Categoria Servizio', SEWCL_TEXT_DOMAIN )
        );

        $args = array(
            'hierarchical' => true, // Settare a false se invece di categorie si vogliono creare tag
            'labels' => $labels,
            'show_ui' => true,
            'show_admin_column' => true,
            'query_var' => true,
            'rewrite' => array( 'slug' => 'sew-servizi' ),
        );

        register_taxonomy( 'sew-categorie-servizi', null, $args);
    }

    function custom_posts() {
        register_post_type( 'sew-servizio',
            array(
                'rewrite' => array( 'slug' => 'sew-servizio' ),
                'labels' => array(
                    'name' => __('Lista Servizi', SEWCL_TEXT_DOMAIN),
                    'singular_name' => __('Servizo', SEWCL_TEXT_DOMAIN),
                    'add_new' => __('Aggiungi Servizo', SEWCL_TEXT_DOMAIN),
                    'add_new_item' => __('Aggiungi Nuovo Servizo', SEWCL_TEXT_DOMAIN),
                    'edit' => __('Modifica', SEWCL_TEXT_DOMAIN),
                    'edit_item' => __('Modifica Servizo', SEWCL_TEXT_DOMAIN),
                    'new_item' => __('Nuovo Servizo', SEWCL_TEXT_DOMAIN),
                    'view' => __('Visualizza', SEWCL_TEXT_DOMAIN),
                    'view_item' => __('Visualizza Servizo', SEWCL_TEXT_DOMAIN),
                    'search_items' => __('Cerca Servizo', SEWCL_TEXT_DOMAIN),
                    'not_found' => __('Nessuna servizio presente', SEWCL_TEXT_DOMAIN),
                    'not_found_in_trash' => __('Nessun servizio presente nel cestino', SEWCL_TEXT_DOMAIN),
                    'parent' => __('Parent Movie Review', SEWCL_TEXT_DOMAIN)
                ),
                'public' => true,
                'menu_position' => 15,
                'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'page-attributes'  ),
                'taxonomies' => array( 'sew-categorie-servizi' ),
                'menu_icon' => 'dashicons-list-view',
                'has_archive' => true,
                'exclude_from_search' => false,
                'show_in_nav_menus' => false,
            )
        );
    }
}

如下所述:

https://codex.wordpress.org/Function_Reference/register_taxonomy

第二个参数设置为null,因为在使用register\u post\u type()时,我将分类法与自定义post类型相关联

我不知道为什么代码停止工作了。我从3年前开始使用这个代码。

分类法是存在的。如果我尝试通过URL访问它,它会起作用:

/wp管理/编辑标签。php?分类法=sew分类服务

似乎分类法与自定义帖子没有关联。事实上,在帖子的编辑屏幕上,它甚至不再可见将帖子与分类法相关联的框

有什么想法吗?

我也试着把所有的事情按时间顺序排列,但无论如何都不行

function custom_posts() {
    register_post_type( 'sew-servizio',
        array(
            'rewrite' => array( 'slug' => 'sew-servizio' ),
            'labels' => array(
                'name' => __('Lista Servizi', SEWCL_TEXT_DOMAIN),
                'singular_name' => __('Servizo', SEWCL_TEXT_DOMAIN),
                'add_new' => __('Aggiungi Servizo', SEWCL_TEXT_DOMAIN),
                'add_new_item' => __('Aggiungi Nuovo Servizo', SEWCL_TEXT_DOMAIN),
                'edit' => __('Modifica', SEWCL_TEXT_DOMAIN),
                'edit_item' => __('Modifica Servizo', SEWCL_TEXT_DOMAIN),
                'new_item' => __('Nuovo Servizo', SEWCL_TEXT_DOMAIN),
                'view' => __('Visualizza', SEWCL_TEXT_DOMAIN),
                'view_item' => __('Visualizza Servizo', SEWCL_TEXT_DOMAIN),
                'search_items' => __('Cerca Servizo', SEWCL_TEXT_DOMAIN),
                'not_found' => __('Nessuna servizio presente', SEWCL_TEXT_DOMAIN),
                'not_found_in_trash' => __('Nessun servizio presente nel cestino', SEWCL_TEXT_DOMAIN),
                'parent' => __('Parent Movie Review', SEWCL_TEXT_DOMAIN)
            ),
            'public' => true,
            'menu_position' => 15,
            'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'page-attributes'  ),
            //'taxonomies' => array( 'sew-categorie-servizi' ),
            'menu_icon' => 'dashicons-list-view',
            'has_archive' => true,
            'exclude_from_search' => false,
            'show_in_nav_menus' => false,
            /*
            'capabilities' => array(
                'edit_post' => 'update_core',
                'delete_post' => 'update_core',
                'edit_posts' => 'update_core',
                'edit_others_posts' => 'update_core',
                'publish_posts' => 'update_core',
                'read_private_posts' => 'update_core'
            ),
            */
        )
    );
    
    $labels = array(
        'name' => __( 'Categorie Servizi', SEWCL_TEXT_DOMAIN ),
        'singular_name' => __( 'Categoria Servizio', SEWCL_TEXT_DOMAIN ),
        'search_items' => __( 'Search Menu Sections', SEWCL_TEXT_DOMAIN ),
        'all_items' => __( 'Tutte le categorie', SEWCL_TEXT_DOMAIN ),
        'parent_item' => __( 'Categoria', SEWCL_TEXT_DOMAIN ),
        'parent_item_colon' => __( 'Categoria Servizio:', SEWCL_TEXT_DOMAIN ),
        'edit_item' => __( 'Modifica Categoria Servizio', SEWCL_TEXT_DOMAIN ),
        'update_item' => __( 'Aggiorna Categoria Servizio', SEWCL_TEXT_DOMAIN ),
        'add_new_item' => __( 'Aggiungi Nuova Categoria', SEWCL_TEXT_DOMAIN ),
        'new_item_name' => __( 'Categoria Servizio', SEWCL_TEXT_DOMAIN )
    );
    
    $args = array(
        'hierarchical' => true, // Settare a false se invece di categorie si vogliono creare tag
        'labels' => $labels,
        'show_ui' => true,
        'show_admin_column' => true,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'sew-servizi' ), // Url /sew-servizi/nome-servizio
    );
    
    register_taxonomy( 'sew-categorie-servizi', array('sew-servizio'), $args);    
}

添加动作('init',数组($this,'init'),PHP\u MAX\u INT);

共有3个答案

李泓
2023-03-14

解决方法:

add_action( 'init',  array($this, 'init'), PHP_MAX_INT );
高恺
2023-03-14

事实上,我最喜欢的方法是使用cpt ui,如果您尝试此代码,它将非常方便

替换

'show_in_nav_menus'   => false,

具有

"show_ui" => true,
"show_in_menu" => true,
"show_in_nav_menus" => true,
益何平
2023-03-14

您可以使用插件轻松控制自定义帖子和分类https://wordpress.org/plugins/custom-post-type-ui/

 类似资料:
  • 我找到了很多解决方案,但我的情况完全不同。 现在我的问题是,我正在开发一个插件,在插件中我制作了自定义帖子类型和自定义分类法,首先它的slug是不同的,现在我希望post类型slug和分类法slug是相同的,我也成功地实现了这一点,但有一个问题是,我的类别链接没有显示在管理菜单中,因为当我注册分类法时,我将object_type设置为slug,这在post类型slug和分类法slug中是相同的,但

  • 我试图显示一个管理菜单项下的自定义分类法,这只是一个页面,即http://example.com/wp-admin/admin.php?page=bla. 根据register\u分类法下的WordPress Dev.页面的,它说: “某些字符串”-如果是现有的顶级页面,如“工具”。php“或”编辑。php?post_type=page',post类型将作为该页面的子菜单放置。 这是否意味着分类法

  • 我已经为我的自定义帖子类型注册了自定义分类法: 工作如预期-我可以为我的自定义帖子选择自定义类别。 然后我将其添加到自定义菜单中: 它显示: 当我点击它(“类别”链接)时,分类法编辑页面加载良好,但是,父菜单显示为折叠,子菜单(“类别”)不突出显示: 另一方面,定制的post类型(linke“virtualproducts”)工作正常(见第一张图)。 我可以做一些破解/解决方法,使用JS/CSS使

  • 我在WordPress文件,但当我想添加新文章或编辑新文章时,在“管理”菜单的右侧找不到自定义分类法元框 我的代码用于自定义分类法: 但我找不到我在截图中标记的位置: 我忘记或错过了什么吗?

  • 我创建了一个自定义的帖子类型(书),然后为这个特定的帖子类型创建了一个自定义分类法(book_cat)。它工作正常,但如果我单击仪表板中的所有书籍页面,则没有列显示已将书籍分配给哪些类别(book_cat)(如果有)。我需要点击每本书编辑并看到那里。 注册新职位类型功能是: 分类法是:

  • 在我正在构建的当前网站中,我构建了以下功能。 对当前形势给予更好的理解。 有一个叫做博客的页面。此页面显示列表中的所有博客(帖子)。所有职位的类别都有一个例外。用户可以选择一个类别。一旦用户单击它,用户将转到该类别。php并查看所有具有该特定类别的帖子。 我想创建相同的场景,但不是用自定义帖子类型。我有一个模板部分;offer-list-template.php offer-list-templa