web-dev-qa-db-ja.com

投稿2ポスト管理メタボックスをCPTからメタ順に並べ替え

"Artist"と呼ばれるカスタムの投稿タイプとWP Event Manager Pluginと組み合わせてPosts 2 Posts(ところで素晴らしいプラグイン)を使い始めました。私の目的は、P2Pを使ってアーティストをイベントにリンクさせ、イベントページに誰が演奏しているかを表示できるようにすることです。

私はEvent Managerで繰り返しIDを増やしたイベントを作成しました。 5、6、7。議論のためにこれらの出来事はすべてその後の月曜日にあります。金曜日に投稿ID 8,9,10,11を持つイベントを作成しました。

これで、adminのメタボックスの順番を、投稿IDで次のようなものを使って並べることができます。

function order_pages_by_ID( $args, $ctype, $post_id ) {
if ( 'posts_to_pages' == $ctype->name ) {
    $args['orderby'] = 'ID';
    $args['order'] = 'asc';
}

return $args;
}

add_filter( 'p2p_connectable_args', 'order_pages_by_ID', 10, 3 );

しかし、アーティストのページからアーティストをイベントに接続しようとすると、月曜日のイベントがすべて表示され、次に金曜日のイベントがすべて表示されます。私が欲しいのは月曜日、金曜日、月曜日、金曜日などです。イベントCPTには_event_start_dateというcustcomフィールドがあり、これを使用してadminメタボックスのラベルに追加できます。

function append_date_to_candidate_title( $title, $post, $ctype ) {
    if ( 'my_connection_type' == $ctype->name && 'event' == $post->post_type ) {
            $meta = get_post_meta( $post->ID, "_event_start_date" );
            $title .= " (" . reset($meta) . ")";
    }

    return $title;
}

このカスタムフィールドを考慮に入れてこれを使用して管理メタボックスのクエリを注文する方法はありますか(または後でPHPを使用して注文することもできますか)。フロントエンドの 'get_connected() `を使ったときの投稿の並び順の例をいくつか見てきましたが、特にadminメタボックスの並び順には関係ありません。

3
Chris Robinson

私はついに答えを見つけました。私はWP_Queryをもっとよく理解する必要があることがわかりました。

それは結局のところ単純であることになった:

function order_pages_by_ID( $args, $ctype, $post_id ) {
    if ( 'posts_to_pages' == $ctype->name ) {
        $args['meta_key'] = '_event_start_date';
        $args['orderby']  = 'meta_value';
        $args['order']    = 'asc';
    }
}
2
Chris Robinson