Как упорядочить страницы и категории по идентификатору или имени в одном запросе?

Я хотел бы запросить большинство моих страниц и категорий на главной странице. Пока я могу получить страницы и категории (сообщения), но я не могу упорядочить список так, как я хочу. Я хочу, чтобы можно было получать пользовательский заказ, например страницу, сообщения из категории, другую страницу и сообщения из другой категории.

Я использую следующее:

        <?php        $args = array(             'cat' => $current,            'post_type' => array(                 'page', 'post'),            'orderby' => 'ID' && array(2,4,1),        );        query_posts( $args );        while ( have_posts()) : the_post(); ?>            <?php //Include the page content template.            if ( is_page() ):                get_template_part( 'content', 'page' );            else:                get_template_part( 'content', 'post' );            endif;            ?>        <?php endwhile;         ?>

от Я использую двадцать пятнадцать, и я не хочу иметь несколько запросов на эту работу, если это не создает нагрузки для веб-сервера. Я хочу максимально сэкономить память.

Ответы и комментарии:

Я думаю, что ваш orderby будет 'orderby' => array ('ID' => array (2,4,1), 'ID' => 'ASC')
Создан 31-12-2017 05:36 admcfajn

Извините, но это на самом деле меньше ответа. Вы намекаете, что я не проводил никаких исследований или мне лучше нанять кого-нибудь. Пожалуйста, скажи мне что-нибудь, чего я не знаю.
Создан 22-07-2014 10:57 cmsdeployed

Я не мог опубликовать это как комментарий. Я не говорю, что вы не проводили никаких исследований, я дал вам несколько идей, которые вы можете искать. Это действительно большая задача, которую я не готов кодировать. Вы должны помнить одну вещь, все на этом сайте, даже модераторы просто участники этого сайта, точно так же, как вы. Мы проводим наше собственное время здесь добровольно из любви к WordPress и удовлетворения, пытаясь помочь другим. Я констатирую факты здесь, так что не раздражайтесь и не грубите.
Создан 22-07-2014 10:19 Pieter Goosen

Прежде всего, никогда не используйте query_posts, никогда. Мой акцент. Он не предназначен для использования вообще и должен быть удален в будущих версиях WordPress. В целом по производительности я бы сказал, что это даже хуже, чем пользовательский запрос. Вы действительно должны использовать WP_Query для поставленной задачи

Примечание: эта функция не предназначена для использования плагинами или темами. Как будет объяснено позже, есть более эффективные варианты для изменения основного запроса. query_posts () - это слишком упрощенный и проблемный способ изменить основной запрос страницы, заменив его новым экземпляром запроса. Он неэффективен (перезапускает SQL-запросы) и в некоторых обстоятельствах потерпит неудачу (особенно часто при разбивке на посты).

К сожалению, вы не можете сделать это в одном запросе, так как вы не можете сортировать в цикле, и в WordPress также нет встроенной функции orderby для этого. Кстати, вы используете заказ неправильно. Посмотрите на параметры orderby в WP_Query
Вам нужно выполнить как минимум два, может быть, даже больше пользовательских запросов, чтобы достичь того, что вы хотите. Когда у вас есть запросы, они должны быть объединены, и именно здесь начинается ваша настоящая головная боль.
Если вам понадобится нумерация страниц, к сожалению, это будет довольно сложно.
Я не думаю, что это действительно вопрос, на который нужно здесь ответить, так как это потребует большого количества кодирования и т. Д. Мне не нравится отвечать на вопрос таким образом, но было бы действительно лучше нанять профессионала, который поможет вам с этим. Кроме того, вы должны пойти и сделать свое исследование самостоятельно и протестировать некоторый код, чтобы увидеть, что работает, а что нет.
Создан 22-07-2014 05:27 Pieter Goosen45.2k1268145

Спасибо за предыдущий ответ. Там может быть недоразумение. Я не думал, что твой комментарий был грубым, Питер Гусен, и мой тоже не был намерен. Тем не мение. Я смог придумать следующие вопросы. Я запрашиваю категории внутри страниц. Не знаю, действительно ли это правильно, но это работает для меня. Я все еще должен сделать больше копать, чтобы очистить и посмотреть, есть ли какие-либо неблагоприятные последствия. Но пока я получаю именно то, что мне нужно, и с помощью дополнительных настроек я смогу стилизовать свои страницы и категории так, как мне нужно.
                <? PHP
    $ pages = get_pages (array (
        'post_type' => 'page',
        'sort_column' => 'menu_order',
        ));
    foreach ($ pages как $ page) {
        $ apage = $ page-> post_name; ?>
                <? php if ($ apage == 'about') {?>
                
                    
                        <? php if ((function_exists ('has_post_thumbnail')) && (has_post_thumbnail ())) {the_post_thumbnail (); }?>
                        

<? php echo $ page-> post_title; ?> H2>
                     Заголовок>
                    

<? php echo apply_filters ('the_content', $ page-> post_content); ?> DIV>
                 Статьи>

 

                <? PHP
                // получить все категории из базы данных
                $ cats = get_categories ();

                // цикл по категориям
                foreach ($ cats as $ cat) {
                    // установка идентификатора категории
                    $ cat_id = $ cat-> term_id;
                    // Сделать заголовок для категрии
                    / * if (in_category ('reviews')): * /
                    echo ''. $ cat-> name. ' header>';
                    // создаем пользовательский запрос WordPress
                    $ args = array ('cat = $ cat_id & posts_per_page = 5');
                    $ the_query = new WP_Query ($ args);
                    // запустить цикл WordPress!
                    if ($ the_query-> have_posts ()):
                        while ($ the_query-> have_posts ()):
                            $ The_query-> the_post ();
                            // создать нашу ссылку сейчас, когда пост настроен?>
                <? php if ((in_category ('reviews')) / * & (category_slug == 'reviews') * /):?>
                
                    
                        <? php if ((function_exists ('has_post_thumbnail')) && (has_post_thumbnail ())) {the_post_thumbnail (); }?>
                        

<? php the_title (); ?> H2>
                     Заголовок>
                    

<? php the_excerpt (); ?> DIV>
                     article>

                    

                    <? php endif; ?>
                <? PHP
                        ENDWHILE;
                    ENDIF; // сделали наш цикл категорий.
                    / * endif; // сделано конкретная категория * /
                } // сделано оператор foreach

                / *
                 * возвращаясь к нашей странице запроса
                 * /

            } elseif ($ apage == 'contact') {?>
                
                    
                        

<? php echo $ page-> post_title; ?> H2>
                     Заголовок>
                    

<? php echo apply_filters ('the_content', $ page-> post_content); ?> DIV>
                 Статьи>

            

                <? php} // конец, если
            } // конец foreach?>

Да, мне нужно будет сбросить запрос!
Создан 23-07-2014 05:21