El orden de envío del tipo de publicación personalizada no funciona

2

Tengo un problema con las entradas para un tipo de publicación personalizada que no se ordenó como se esperaba dentro de una consulta personalizada:

<h4>Related projects</h4>

            <?php

                $rp_args = array(
                        'post_type' => 'work',
                        'post_status' => 'publish',
                        'orderby' => 'title',
                        'order' => 'ASC',
                        );


                $related_projects = new WP_Query($rp_args);
            ?>

            <ul>
                <?php 
                if($related_projects->have_posts()):
                while ($related_projects->have_posts()) : $related_projects->the_post();
            ?>
                <li><a href="<?php the_permalink();?>"><?php the_title();?></a></li>
            <?php
               endwhile;
               endif;
            ?>
            </ul>

Se supone que simplemente debe sacar un tipo de publicación personalizada y ordenarlo por nombre, pero el pedido no funciona y no estoy seguro de por qué no.

Es simplemente listar las publicaciones en el orden en que aparecen en el administrador de WP.

¿Alguna idea sobre por qué mi pedido no está funcionando? Encuentra el tipo de publicación correcto y la cantidad de publicaciones que especifico, simplemente el orden no parece funcionar.

    
pregunta 03.02.2011 - 14:15

2 respuestas

6

Sí, soy estúpido.

El plugin Order Order de Post Types tiene una opción (establecida de forma predeterminada) que anula cualquier orden realizada en las consultas. Apaga eso y el problema desaparece.

    
respondido por el user2914 03.02.2011 - 14:19
0

en el archivo category.php use, por ejemplo,

sort_query_posts_by('title', 'desc');

o use ID, fecha, etc. (vea la función a continuación) antes del bucle e inserte la función a continuación

if (! function_exists('sort_query_posts_by'))
{
    function sort_query_posts_by($order_by, $order = 'asc')
    {
        global $wp_query;
        $order_by = strtolower($order_by);
        $order    = strtolower($order);

        if ($order_by == 'rand') {
            shuffle($wp_query->posts);
            return;
        }

        if ($order_by == 'none') {
            $order_by = 'id';
            $order = 'asc';
        }

        $props = array(
            'author'        => 'return sqp_compare_by_number($o1->post_author, $o2->post_author, '.$order.');',
            'comment_count' => 'return sqp_compare_by_number($o1->comment_count, $o2->comment_count, '.$order.');',
            'date'          => 'return sqp_compare_by_number(strtotime($o1->post_date), strtotime($o2->post_date), '.$order.');',
            'id'            => 'return sqp_compare_by_number($o1->ID, $o2->ID, '.$order.');',
            'menu_order'    => 'return sqp_compare_by_number($o1->menu_order, $o2->menu_order, '.$order.');',
            'modified'      => 'return sqp_compare_by_number(strtotime($o1->post_modified), strtotime($o2->post_modified), '.$order.');',
            'parent'        => 'return sqp_compare_by_number($o1->post_parent, $o2->post_parent, '.$order.');',
            'title'         => 'return sqp_compare_by_string($o1->post_title, $o2->post_title, '.$order.');'
        );

        usort($wp_query->posts, create_function('$o1, $o2', $props[$order_by]));
    }

    function sqp_compare_by_number($n1, $n2, $order)
    {
        $n1 = (int) $n1;
        $n2 = (int) $n2;
        $v  = $n1 > $n2 ? 1 : ($n1 < $n2 ? -1 : 0);
        return ($order == 'desc') ? $v * -1 : $v;
    }

    function sqp_compare_by_string($s1, $s2, $order)
    {
        $v = strnatcasecmp($s1, $s2);
        return ($order == 'desc') ? $v * -1 : $v;
    }
}
    
respondido por el Matt Denara 17.06.2014 - 15:32

Lea otras preguntas en las etiquetas