Как отобразить набор объединенных постов и страниц, используя метод query_posts () Wordpress - PullRequest
1 голос
/ 28 октября 2010

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

ЭтоНасколько я понимаю, query_posts () переопределяет любой набор элементов, которые Wordpress отображает на странице, поэтому здесь, в зависимости от того, в каком режиме находится тема, он передает параметры в query_posts () для получения сообщений определенной категории или передает в массивстраниц:

<div id="slides">
    <?php global $ids;
    $ids = array(); 

    $featured_cat = get_option('mytemplate_feat_cat'); 
    $featured_num = get_option('mytemplate_featured_num'); 

    if (get_option('mytemplate_use_pages') == 'false') query_posts("showposts=$featured_num&cat=".get_cat_ID($featured_cat));
    else {
        global $pages_number;

        if (get_option('mytemplate_feat_pages') <> '') $featured_num = count(get_option('mytemplate_feat_pages'));
        else $featured_num = $pages_number;

        query_posts(array
                        ('post_type' => 'page',
                        'orderby' => 'menu_order',
                        'order' => 'ASC',
                        'post__in' => get_option('mytemplate_feat_pages'),
                        'showposts' => $featured_num
                    ));
    } ?>
            <!-- Start my loop to display everything-->
    <?php if (have_posts()) : while (have_posts()) : the_post();
    global $post; ?>

До сих пор я сделал это немного более понятным, но не могу обойтись без остатка о том, как объединить параметры, чтобы сказать query_posts (getMyPostsArray (). AddList(ohINeedACouplePagesToo ())) // Да, я знаю, что это похоже на C # или что-то ... Я не парень PHP ..

вот код в немного более читаемой версии, которая ближе к тому, что яхочу:

            $featured_cat = get_option('mytemplate_feat_cat'); 
                //I combined featured_num to get the total number of featured items to display
        $featured_num = get_option('mytemplate_featured_num') + count(get_option('mytemplate_feat_pages'));; 

query_posts("showposts=$featured_num&cat=".get_cat_ID($featured_cat));

            //I think this second line overwrites the first query_posts() :-/
            query_posts(array
                            ('post_type' => 'page',
                            'orderby' => 'menu_order',
                            'order' => 'ASC',
                            'post__in' => get_option('mytemplate_feat_pages'),
                            'showposts' => $featured_num
                        ));

1 Ответ

1 голос
/ 28 октября 2010

Райан, почему бы вам не выполнить два запроса и два цикла?

query_posts("post_type=post&showposts=3");
while (have_posts()) { the_post(); }

query_posts(array(
    "post_type" => "page",
    "post__in" => get_option("mytemplate_feat_pages"),
    "showposts" => 5
));
while (have_posts()) { the_post(); }

Если вам нужно определенное количество постов и страниц, чтобы заполнить пространство, вы также можете использовать $wp_query->found_posts чтобы реально рассчитать что у вас есть и что вам нужно.Это, вероятно, было бы самым простым решением, поскольку, даже если вы можете получать сообщения и страницы в SQL, вам может быть трудно упорядочить их, поскольку у сообщений нет порядка меню, а страницы, упорядоченные по дате публикации, не будут.

Надеюсь, это помогло, ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...