web-dev-qa-db-ja.com

カスタムサブメニュー項目とトップレベルメニュー項目の投稿タイプとの関連付け

私はすべての異なる投稿タイプの管理者メニューサブメニューページを設定するプラグインに取り組んでいます。

これらの新しいサブメニューページをトップレベルメニュー項目の対応する投稿タイプに関連付けることができる必要があります。 $_GETの使用に頼らなくてもこれは可能ですか?

$typenowedit.phpで使用されていますが、カスタムページでは使用できません。NULLのみが返されるためです。

だから基本的に:どのように私はカスタムメニュー項目に適切な/関連する投稿タイプを設定しますか。

更新:

これが私がしていることをもう少しうまく説明しているイメージです。 http://i.imgur.com/4q4Dy.jpg

現状では、サブメニューのカスタムアイテムはPagesがアクティブなときにのみ利用可能です。そうでないと$_GETpost_typeを取得できません。

私が使っている:

$post_type = esc_attr( $_GET['post_type'] );
$post_type_object = get_post_type_object( $post_type );    
$title = $post_type_object->labels->name;

$page = add_submenu_page( 'edit.php?post_type=' . $post_type, $title, $title, 'edit_pages', 'order-' . $post_type, 'cmspo_menu_order_page' );

そのため、私はカスタムアイテムを関連付けるべき適切な投稿タイプを取得する方法が必要です。この場合は "page"ですが、各カスタム投稿タイプの下にcapability_type "page"に登録されているカスタムアイテムがあります。 "役職"。

1
INT

サブメニューページの出力をレンダリングするコールバック関数には、現在の投稿タイプに関する情報が必要です。そしてこの時点でたくさんの情報が用意されています。

add_action( 'admin_menu', 'wpse_60730_demo_submenu' );

/**
 * Register sub menu pages.
 *
 * Note that get_current_screen() is still NULL now.
 *
 * @wp-hook admin_menu
 * @return void
 */
function wpse_60730_demo_submenu()
{
    // get public post types
    $post_types = get_post_types( array ( 'public' => TRUE ) );

    foreach ( $post_types as $post_type )
    {
        add_submenu_page(
            "edit.php?post_type=$post_type",
            "Extra $post_type", // this should be made translatable
            "Extra $post_type", // this too
            "edit_{$post_type}s",
            "order-$post_type",
            'wpse_60730_demo_callback'
        );
    }
}
/**
 * Render the sub menu page output.
 *
 * All information is set now.
 *
 * @return void
 */
function wpse_60730_demo_callback()
{
    $screen = get_current_screen();
    global $typenow, $parent_file;
    print "<pre>get_current_screen()\n" . htmlspecialchars( print_r( $screen, TRUE ) ) . '</pre><hr>';
    print "<pre>\$typenow: " . htmlspecialchars( print_r( $typenow, TRUE ) ) . '</pre><hr>';
    print "<pre>\$parent_file: " . htmlspecialchars( print_r( $parent_file, TRUE ) ) . '</pre>';
}

結果

enter image description here

3
fuxia