web-dev-qa-db-fra.com

Champ personnalisé Ordre par Nom et Prénom

Je cherche un moyen de classer ma requête par Nom, puis par Prénom. J'ai été capable de faire Nom, mais pas beaucoup de chance dans la partie Nom + Prénom. Voici ce que je suis venu:

$posts = get_posts(
    [
        'post_type'      => 'soldier',
        'post_status'    => 'publish',
        'posts_per_page' => 5,
        'meta_key'       => 'last_name',
        'orderby'        => 'meta_value',
        'order'          => 'DESC',
        'meta_query'     => [
            [
                'key'     => 'last_name',
                'orderby' => 'meta_value',
                'order'   => ASC
            ],
            [
                'key'     => 'first_name',
                'orderby' => 'meta_value',
                'order'   => ASC
            ],
        ],
        'paged'          => $soldier_paged
    ]
);
1
Mark Anthony

Votre code présente quelques problèmes, dont certains non liés, mais vous avez généralement besoin de méta-requêtes nommées pour les commander à l'aide de plusieurs clés méta:

$posts = get_posts( [
    'post_type'      => 'soldier',
    'posts_per_page' => 5,
    'paged'          => $soldier_paged,
    'meta_query'     => [
        'last_name_clause'  => [
            'key'     => 'last_name',
            'compare' => 'EXISTS'
        ],
        'first_name_clause' => [
            'key'     => 'first_name',
            'compare' => 'EXISTS'
        ],
    ],

    'orderby' => [
        'last_name_clause'  => 'ASC',
        'first_name_clause' => 'ASC',
    ],
] );
1
Milo