web-dev-qa-db-ja.com

どのように私のカスタム投稿タイプをnav-menu.phpの 'メニュー'に表示させることができますか?

私のカスタム投稿タイプには少し問題があります。私はそれらを私のテーマの中でうまく作成することはできますが、それらを 'Menu'スクリーンに表示させることはできません…少なくともデフォルトではそうではありません。

私は自分のコードにメニューとUIフラグを追加しようとしました(下記参照)、しかしサイコロはありません。

面白いことに、私がカスタム投稿タイプUIプラグインを有効にすると、カスタム投稿タイプが「メニュー」画面にうまく表示されることがあります。これは私がどこかに欠けているステップがあること、そしてどういうわけか、Custom Post Types UIプラグインがそのフラグを設定し、私のカスタム投稿タイプと分類法がnav-menu.phpに表示されることを可能にするメニュー画面.

編集::上記のビットが答えている。ミロありがとう。私は 'Screen Option'タブでそれらをオンにしているはずです。

関連するメモで、分類法を使用せずにカスタム投稿タイプをメニュー項目として使用できるようにする方法はありますか?説明してみましょう。この例では、ポートフォリオの投稿タイプを作成しました。

a。それがnav-menus.phpに表示されたら、メニューに追加する個々のページを選択できます。これは理想的ではありません。

b。あるいは、ポートフォリオページをカテゴリに割り当て(ウィジェットと呼びましょう)、ウィジェットに割り当てられたすべてのページをアーカイブページに表示することもできます。これは別の問題を提起します、 'Posts'がWPで振る舞うように、すべての新しいポートフォリオページを少なくとも1つのデフォルトカテゴリに強制的に割り当てることができますか?誰かが新しいポートフォリオページにカテゴリを割り当てるのを忘れるまで、このソリューションはほとんどの場合うまくいきます。

c。 3番目のオプションは、書き換えスラッグを使用し、カスタムメニュー項目を作成することです。(この場合は) '/ portfolio /'を指定します。これは私のパーマリンクでうまくいきます。しかし、WordPressはポートフォリオページを表示するときにこのメニュー項目に '.current-post-item'、 '.current-menu-parent'、 '.current-post-parent'クラスを追加しません。私はサイト上の他のすべてのページ/サブページや投稿でできるように、ポートフォリオページを表示するときに 'Portfolio'メニューエントリを強調表示するためのCSS。これはそれほど大したことではありませんが、サイト訪問者にとって一貫したUIエクスペリエンスとは言えません。

これがカスタム投稿タイプを登録するための私のコードです。ご覧のとおり、私はたくさんの 'show_in _...'フラグを追加していますが、役に立ちません。フラグを削除し、一度に1つずつ追加して(毎回クリーンなデータベースで)テストしてみましたが、役に立ちませんでした。私が先に指摘したように、カスタム投稿タイプUIプラグインは(ほとんどの場合)この動作を可能にしているように思われるので、この登録コードの外側のステップを見逃していることを示唆しているようです。

前もって感謝します。

add_action( 'init', 'toshihiro_register_portfolio_content_type');
function toshihiro_register_portfolio_content_type(){
    register_post_type('tosh_portfolio',
    array(
         'labels' => array (
             'name' => 'Portfolio Pages',
             'singular_name' => 'Portfolio Page',
             'menu_name' => 'Portfolios',
             'add_new' => 'Create Portfolio Page',
             'add_new_item' => 'Create New Portfolio Page',
             'edit' => 'Edit Portfolio Page',
             'edit_item' => 'Edit Portfolio Page',
             'new_item' => 'New Portfolio Page',
             'view' => 'View Portfolio Page',
             'view_item' => 'View Portfolio Page',
             'search_items' => 'Search Portfolio Pages',
             'not_found' => 'No Portfolio Pages Found',
             'not_found_in_trash' => 'No Portfolio Pages found in Trash',
         ),
        'description' => 'Portfolio or product or project pages',
        'supports' => array('title', 'editor', 'excerpt', 'revisions', 'thumbnail'),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'show_in_nav_menus' => true,
        'query_var' => true,
        'has_archive' => true,
        'hierarchical' => false,
        'can_export' => true,
        'menu_icon' => trailingslashit(TOSH_IMAGES_URI) . 'toshihiro_icon.png',
        'menu_position' => 33,
        'rewrite' => array('slug' => 'portfolio'),
    )
);
register_taxonomy('tosh_cat_port',array (0 => 'tosh_portfolio',),array( 'hierarchical' => true,
                                                            'label' => 'Portfolio Categories',
                                                            'singular_label' => 'Portfolio Category',
                                                            'show_ui' => true,
                                                            'query_var' => true,
                                                            'show_in_nav_menus' => true,
                                                            'rewrite' => array('slug' => 'portfolio_cat'),
                                                             ) );
register_taxonomy('tosh_tag_port',array (0 => 'tosh_portfolio',),array( 'hierarchical' => false,
                                                            'label' => 'Portfolio Tags',
                                                            'singular_label' => 'Portfolio Tag',
                                                            'show_ui' => true,
                                                            'show_in_nav_menus' => true,
                                                            'query_var' => true,
                                                            'rewrite' => array('slug' => 'portfolio_tags'),
                                                             ) );
}
3
Toshihiro

[表示] - > [メニュー]を選択し、上部の[画面オプション]に移動して、CPTのUIをクリックすると表示されます。

1
user100847

現在のユーザーオプション 'metaboxhidden_​​nav-menu'を編集することでカスタム投稿タイプを強制的にオンにすることができます。

function display_post_type_nav_box(){

    $hidden_nav_boxes = get_user_option( 'metaboxhidden_nav-menus' );

    $post_type = 'foobar'; //Can also be a taxonomy slug
    $post_type_nav_box = 'add-'.$post_type;

    if(in_array($post_type_nav_box, $hidden_nav_boxes)):
        foreach ($hidden_nav_boxes as $i => $nav_box):
            if($nav_box == $post_type_nav_box)
                unset($hidden_nav_boxes[$i]);
        endforeach;
        update_user_option(get_current_user_id(), 'metaboxhidden_nav-menus', $hidden_nav_boxes);
    endif;
}
add_action('admin_init', 'display_post_type_nav_box');
1
Brian Fegter