web-dev-qa-db-fra.com

get_pages tri alphabétiquement par méta valeur

J'exploite un site Web immobilier et j'ai une liste des maisons que nous vendons. J'utilise plusieurs champs personnalisés pour stocker des informations sur les maisons. Lorsque vous cliquez sur une maison dans la page de liste de maisons (page, pas de publication), vous accédez à une page dédiée (à nouveau, pas de publication) pour cette maison. Je suis très nouveau pour PHP et Wordpress.

À l’heure actuelle, le code que j’utilise (get_pages) s’efforce d’afficher toutes les pages que je souhaite, mais il effectue le tri en fonction de la date de publication. Au lieu de cela, ce que je souhaite, c’est trier par ordre alphabétique l’une de mes méta-valeurs Custom Field; spécifiquement, pour trier A-Z par l’adresse municipale. Est-il possible d'utiliser le paramètre "sort_column" pour ce faire? Tout ce que j'ai trouvé en cherchant est lié à l'obtention de posts au lieu de pages .

Voici mon code actuel qui récupère les pages:

<?php $listingPages = get_pages( 
        array(
            'sort_order' => 'ASC',
            'sort_column' => 'post_date',
            'meta_key' => 'houseNo',
            'post_type' => 'page',
            'post_status' => 'publish'
        )
    );

    foreach( $listingPages as $page ) {     
        $content = $page->post_content;
        if ( ! $content ) // Check for empty page
            continue;

        $content = apply_filters( 'the_content', $content );
    ?>
        <div class="listingPreview">
            <h2 class="listingTitle"><a href="<?php echo get_page_link( $page->ID ); ?>"><span class="houseNo"><?php echo get_post_meta($page->ID, 'houseNo', true); ?></span>&nbsp;<?php echo get_post_meta($page->ID, 'streetAdd', true); ?></a></h2>
        </div>
    <?php
    }
?>

S'il vous plaît excuser mon code sale, je suis un noob complet et je suis tout à fait seul avec cela et n'ont aucune formation professionnelle.

Donc, fondamentalement, je me demande si je pourrais faire quelque chose comme ceci avec le paramètre sort_column (cela ne fonctionne évidemment pas):

<?php $listingPages = get_pages( 
        array(
            'sort_order' => 'ASC',
            'sort_column' => get_post_meta('streetAdd'),
            'meta_key' => 'houseNo',
            'post_type' => 'page',
            'post_status' => 'publish'
        )
    );

Je ne sais même pas si je pose la bonne question ou si je dois utiliser une sorte de requête personnalisée appelée depuis functions.php ou quelque chose du genre. Je suis ouvert à tout ce que je dois faire pour y parvenir. Merci de votre aide!

2
redsun

La fonction get_pages est plutôt ancienne et ne devrait plus être utilisée. Utilisez plutôt un get_posts (une page est simplement un type spécial de publication):

$listingPages = get_posts( 
    array(
        'meta_key' => 'streetAdd',
        'post_type' => 'page',
        'post_status' => 'publish',
        'orderby' => 'meta_value',
        'order' => 'ASC',
    )
);
4
Otto