向“NAV_MENU_ITEM”添加自定义分类

时间:2018-03-27 作者:user2752173

有人知道是否有一种方法可以处理nav_menu_item 内置post类型?当我将自定义分类法分配给此帖子类型时,我在菜单编辑器中看不到任何更改。。。它与posts, pagescustom post types.

以下是我如何注册自定义分类法:

  add_action( \'init\', \'my_region_taxo\', 0 );
  function my_region_taxo() {
    $labels = array(
        \'name\'                       => _x( \'Regions\', \'Taxonomy General Name\', \'my-text-domain\' ),
        \'singular_name\'              => _x( \'Region\', \'Taxonomy Singular Name\', \'my-text-domain\' ),
        (...)
    );
    $rewrite = array(
        \'slug\'                       => \'region\',
        \'with_front\'                 => true,
        \'hierarchical\'               => true,
    );
    $args = array(
        \'labels\'                     => $labels,
        \'hierarchical\'               => true,
        \'public\'                     => true,
        \'show_ui\'                    => true,
        \'show_admin_column\'          => true,
        \'show_in_nav_menus\'          => false,
        \'show_tagcloud\'              => false,
        \'rewrite\'                    => $rewrite,
        \'show_in_rest\'               => true,
    );
    register_taxonomy(
        \'my_region_taxonomy\',
        array(
            \'post\',
            \'page\',
            \'nav_menu_item\'
        ),
        $args
    );
  }

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

这并不是允许将分类术语添加到菜单的方式。要做到这一点,您只需设置show_in_nav_menustrue 注册分类时。您已将其设置为false.

$args = array(
    \'labels\'                     => $labels,
    \'hierarchical\'               => true,
    \'public\'                     => true,
    \'show_ui\'                    => true,
    \'show_admin_column\'          => true,
    \'show_in_nav_menus\'          => true, // This
    \'show_tagcloud\'              => false,
    \'rewrite\'                    => $rewrite,
    \'show_in_rest\'               => true,
);

register_taxonomy(
    \'my_region_taxonomy\',
    array(
        \'post\',
        \'page\', // Not here
    ),
    $args
);
您的分类法实际上不应该是nav_menu_item 岗位类型。

SO网友:Luke Chinworth

一种快速的方法是通过启用show_ui 对于nav_menu_item 岗位类型。

add_filter(\'register_post_type_args\', \'register_post_type_args\', 10, 2);

function register_post_type_args( $args, $post_type ) {
    if ( $post_type === \'nav_menu_item\' ) {
        $args[\'show_ui\'] = true;
    }
    return $args;
}
然后,您可以检查菜单以获取nav\\U menu\\u项post id,并将其替换到post edit url中。我知道这不如从菜单编辑器中设置术语,但这是一种快速工作的方法。

结束

相关推荐

Next/Previous post navigation

嘿,伙计们,我想让我的下一个和上一个链接只针对一个类别,而不是所有类别,所以当你在该类别的最后一篇文章上停止时,现在它仍在另一个类别中,无法在我的单曲中定义post\\u nav\\u链接。php。。。。你能帮帮我吗?这是我单身的照片。php对不起,我的英语不好,谢谢。