get_pages ordenados alfabéticamente por valor meta

2

Tengo un sitio web de bienes raíces y tengo una lista de las casas que estamos vendiendo. Estoy usando un montón de campos personalizados para almacenar información sobre las casas. Cuando hace clic en una casa en la página de la lista de casas (página, no en la publicación), lo lleva a una página dedicada (nuevamente, no a la publicación) de esa casa. Soy muy nuevo en PHP y Wordpress.

En este momento, el código que estoy usando (get_pages) está trabajando para mostrar todas las páginas que quiero, pero está ordenado por post_date. En su lugar, lo que quiero que haga es ordenar alfabéticamente por uno de mis valores meta de campo personalizado; Específicamente, para ordenar A-Z por la dirección de la calle. ¿Hay alguna manera de que pueda usar el parámetro "sort_column" para hacer esto? Todo lo que he encontrado en la búsqueda se ha relacionado con obtener publicaciones en lugar de páginas .

Aquí está mi código actual que obtiene las páginas:

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

Por favor, disculpe mi código sucio, soy un noob completo y estoy totalmente solo con esto y no tengo entrenamiento profesional.

Básicamente, me pregunto si podría hacer algo como esto con el parámetro sort_column (esto obviamente no funciona):

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

Ni siquiera sé si estoy haciendo la pregunta correcta, o si necesito usar algún tipo de consulta personalizada llamada de functions.php o algo así. Estoy abierto a todo lo que necesito hacer para lograr esto. ¡Gracias por tu ayuda!

    
pregunta redsun 07.09.2012 - 21:35

1 respuesta

4

La función get_pages es bastante antigua y ya no debería usarse más. Use un get_posts en su lugar (una página es solo un tipo especial de publicación):

$listingPages = get_posts( 
    array(
        'meta_key' => 'streetAdd',
        'post_type' => 'page',
        'post_status' => 'publish',
        'orderby' => 'meta_value',
        'order' => 'ASC',
    )
);
    
respondido por el Otto 07.09.2012 - 21:42

Lea otras preguntas en las etiquetas