web-dev-qa-db-fra.com

Commande Post 2 Boîte aux méta de la société Post par méta du CPT

Je viens tout juste de commencer à utiliser Posts 2 Posts (un plugin brillant, en passant) en combinaison avec un type de message personnalisé appelé "Artist" et le plug-in WP Event Manager. Mon objectif est d’utiliser P2P pour relier les artistes aux événements afin qu’une page d’événement puisse afficher qui se produit.

J'ai créé un nombre récurrent d'événements dans Event Manager qui, de manière compréhensible, ont des ID de publication incrémentiels, par exemple. 5,6,7. Supposons que ces événements se déroulent tous les lundis suivants. J'ai ensuite créé un événement récurrent, par exemple un vendredi qui porte les identifiants de post 8,9,10,11 .....

Maintenant, je peux commander la commande de la méta-boîte dans admin en identifiant de poste en utilisant quelque chose comme:

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

Mais cela va maintenant afficher tous les événements du lundi, puis tous les événements du vendredi, lorsque j'essaie de connecter un artiste à un événement à partir de la page de l'artiste. Ce que j'aimerais, c'est d'avoir lundi, vendredi, lundi, vendredi, etc. L'événement CPT a un champ custcom appelé _event_start_date que je peux ajouter à l'étiquette dans la méta-boîte admin en utilisant:

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

Existe-t-il un moyen de commander la requête pour que la méta-boîte administrateur prenne en compte ce champ personnalisé et le commande (ou même le commande ultérieurement dans PHP)? J'ai vu quelques exemples de classement des publications lorsque vous utilisez 'get_connected () `depuis le front-end sans rien de spécifiquement lié à la commande dans la méta-boîte de l'administrateur.

3
Chris Robinson

J'ai finalement trouvé la réponse. Il s'avère que j'avais juste besoin d'une meilleure compréhension de WP_Query.

Cela a fini par être aussi simple que:

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