it-swarm.com.de

Bestellung von Post 2 Post-Admin-Meta-Box von Meta von CPT

Ich habe gerade damit begonnen, Posts 2 Posts (übrigens brillantes Plugin) in Kombination mit einem benutzerdefinierten Post-Typ namens "Artist" und dem Event Manager-Plugin WP zu verwenden. Mein Ziel ist es, mit P2P Interpreten mit Events zu verknüpfen, damit auf einer Eventseite angezeigt werden kann, wer gerade auftritt.

Ich habe eine wiederkehrende Anzahl von Ereignissen in Event Manager erstellt, die verständlicherweise inkrementelle Beitrags-IDs aufweisen, z. 5,6,7. Nehmen wir als Argument an, dass diese Ereignisse alle an folgenden Montagen stattfinden. Ich habe dann ein wiederkehrendes Ereignis erstellt, beispielsweise an einem Freitag, dessen Beitrags-ID 8,9,10,11 lautet .....

Jetzt kann ich die Bestellung der Meta-Box in Admin per Post-ID mit etwas wie bestellen:

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 );

Jetzt werden jedoch alle Montagsereignisse und dann alle Freitagsereignisse angezeigt, wenn ich versuche, einen Künstler über die Künstlerseite mit einem Ereignis zu verbinden. Ich möchte Montag, Freitag, Montag, Freitag usw. haben. Das CPT-Ereignis hat ein Custcom-Feld mit dem Namen _event_start_date, das ich an das Label in der Admin-Meta-Box anhängen kann, indem ich Folgendes verwende:

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;
}

Gibt es eine Möglichkeit, die Abfrage für die Admin-Meta-Box zu bestellen, um dieses benutzerdefinierte Feld zu berücksichtigen und danach zu bestellen (oder sie sogar in PHP zu bestellen)? Ich habe ein paar Beispiele für die Bestellung der Posts gesehen, wenn 'get_connected ()' im Frontend verwendet wurde, ohne dass dies speziell mit der Bestellung in der Admin-Meta-Box zu tun hatte.

3
Chris Robinson

Ich habe endlich die Antwort gefunden. Es stellte sich heraus, dass ich nur ein besseres Verständnis von WP_Query brauchte.

Es war so einfach wie:

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