web-dev-qa-db-fra.com

Le type de publication personnalisé ne fonctionne pas après la commande

J'ai un problème avec les entrées pour un type d'article personnalisé qui ne sont pas commandées comme prévu dans une requête personnalisée:

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

Il est supposé simplement extraire un type d'article personnalisé et le commander par son nom - mais l'ordre ne fonctionne pas et je ne sais pas pourquoi.

Il s’agit simplement de répertorier les publications dans leur ordre d’apparition dans WP admin.

Avez-vous une idée de la raison pour laquelle ma commande n’intervient pas? Il trouve le type de message correct et le nombre de messages que je spécifie - la commande ne semble pas fonctionner.

2
user2914

Oui, je suis stupide.

Post-types Le plug-in de commande a une option (définie par défaut) qui remplace tout ordre effectué dans les requêtes. Éteignez cela et le problème disparaît.

6
user2914

dans le fichier category.php utiliser par exemple

sort_query_posts_by('title', 'desc');

ou utilisez ID, date, etc. (voir la fonction ci-dessous) avant la boucle et insérez la fonction ci-dessous

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;
    }
}
0
Matt Denara