web-dev-qa-db-ja.com

2つのカスタム投稿タイプを1つの管理ページに統合しますか?

私は4つのカスタム投稿タイプでサイトを構築しています。クライアント/管理者にとって物事を簡単にするために、これらのカスタム投稿タイプをバックエンドの1つのリストにマージする方法があるかどうか疑問に思いますか。通常のバックエンド管理ページを投稿のリストと列で見た場合のように、そのようなページに3つの他の投稿タイプをまとめて並べ替えや検索を行うことができますか?

CPTを1つにまとめることはできません。可能であれば、管理領域の1つの「表示」ページ以外では別々にしておく必要があります。

これを行う方法についての任意の考え?あるいは、どこでこれを開発するかを見たり考えたりし始めたとしても?

9
Aaron

確かに問題はさらなる開発の間にポップアップするので、ほんの出発点です。たとえば、今のところ、検索機能は文字列(post_type)を期待していて配列を受け取っているので壊れています。

投稿画面に複数の投稿タイプを一覧表示するには、pre_get_postsにフックしてクエリを変更します。このテストでは、投稿、ページ、商品が投稿画面(http://example.com/wp-admin/edit.php)にまとめて表示されます。

add_action( 'pre_get_posts', 'join_cpt_list_wspe_113808' );

function join_cpt_list_wspe_113808( $query ) 
{
    // If not backend, bail out
    if( !is_admin() )
        return $query;

    // Detect current page and list of CPTs to be shown in Dashboard > Posts > Edit screen
    global $pagenow;
    $cpts = array( 'post', 'page', 'product' );

    if( 'edit.php' == $pagenow && ( get_query_var('post_type') && 'post' == get_query_var('post_type') ) )
        $query->set( 'post_type', $cpts );

    return $query;
}

各投稿の列を表示するためのヘルパーコード投稿タイプ:

add_filter( 'manage_edit-post_columns', 'add_cpt_column_wspe_113808' );
foreach( array( 'post', 'page', 'product' ) as $cpt )
    add_action( "manage_{$cpt}_posts_custom_column", 'show_cpt_column_wspe_113808', 10, 2 );

function add_cpt_column_wspe_113808( $columns ) 
{
    $columns[ 'cpt' ] = 'Post Type';
    return $columns;
}

function show_cpt_column_wspe_113808( $column_name, $post_id ) 
{
    if ( 'cpt' != $column_name )
        return;
    echo get_post_type( $post_id );
}
2
brasofilo

私はこれにはAdmin Menu Editor proをお勧めします。下部にリンクします。

面白い。私が取り組んでいたあるプロジェクトで、私はちょっと関連性のあるいくつかのCPT(カスタム投稿タイプ)を持っていました。そのセクションは 'Info Center'であり、彼らはプレスリリース、ホワイトペーパー、紹介文などをInfo Center内に入れることを望んでいました。フロントエンドでは、これを作成するのは簡単でした。バックエンドでも、論理的に一致するようにしたいと思いました。カスタム投稿タイプの大部分は、特定のコンテンツ(メタファイル)とレイアウトの要件により、CPTとして設定されています。結局20 CPT近くになりました。

そうは言っても、アドミンエディタプラグインを使用してバックエンドメニューから関連するインフォセンターCPTを削除し、関連するCPTリンクを含む 'インフォセンター'メニューを作成しました。それらはすべて結合しているように見えましたが、そうではありませんでした。

これがプラグインのリンクです。 http://adminmenueditor.com/ デモも試してください。

0
Alex V.