使用wp_list_ages创建2个页面列表,并根据类别包括和排除其中的一些页面

时间:2014-10-20 作者:Gab

我想创建2个页面列表,并根据其类别包括和排除其中的一些页面。在下面的示例中,我有两个列表。升级页面列表和其他页面列表。

    <ul class="promoted">
        <?php wp_list_pages(\'include=4\');?>
    </ul>
    <ul>
        <?php wp_list_pages(\'exclude=4\');?>
    </ul>
我已将我的页面添加到特定类别(4),但运气不佳。

2 个回复
最合适的回答,由SO网友:DanBeckett 整理而成

不必设置多个循环的一种快速方法是使用get_posts() 函数并抓取所有页面,然后使用in_category() 并将属于该类别的页面与不属于该类别的页面分开。

然后,您可以使用一个简单的foreach循环分别在ULs中运行这两组页面。

<?php $args = array(
    \'post_type\' =>  \'page\',
    \'post_status\'   =>  \'publish\',
    \'numberposts\'   =>  -1
);

//Pull pages into an array
$all_pages = get_posts($args);

//Create empty arrays to populate with filtered pages
$in_category = array();
$ex_category = array();

//loop through the page array
foreach($all_pages as $post) {
    //Set data from the current page as globals,
    //to enable WordPress function tags
    setup_postdata($post);

    //Build the format of the link to be returned
    $link_format = \'<li><a href="\'.get_the_permalink().\'">\'.get_the_title().\'</a></li>\';        

    //Check whether the page is in the category and
    //send this link to the relevant array
    if(in_category(4)) {
        $in_category[] = $link_format;
    } else {
        $ex_category[] = $link_format;
    }   
};

//Restore postdata to before we set it to the current post
wp_reset_postdata(); ?>

<ul class="links_in_category_4">
    <?php foreach($in_category as $cat_link) echo $cat_link; ?>
</ul>

<ul class="links_not_in_category_4">
    <?php foreach($ex_category as $cat_link) echo $cat_link; ?>
</ul>

SO网友:Phil

我实际上有一个基于页面的大型网站,我正在开发。因为它主要是页面驱动的,所以我使用了一个函数来允许页面上的类别和标记。我想知道是否有办法使用wp\\u list\\u pages()函数排除类别。这将允许我输入一个id或slug,而不是每次有新的页面要排除时,都用新的页面id更新它。

更具体地说,我正在使用以下函数,其中使用了wp\\u list\\u pages()函数。

function wpb_list_child_pages() { 

global $post; 

if ( is_page() && $post->post_parent )

    $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->post_parent . \'&echo=0\' );
else
    $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->ID . \'&echo=0\' );

if ( $childpages ) {

    $string = \'<ul>\' . $childpages . \'</ul>\';
}

return $string;

}

add_shortcode(\'wpb_childpages\', \'wpb_list_child_pages\');

该函数可在此处找到:https://www.wpbeginner.com/wp-tutorials/how-to-display-a-list-of-child-pages-for-a-parent-page-in-wordpress/

结束

相关推荐

Subdomains to pages

嗨,我在wordpress上有一个网站,有2个页面,我想把它转换成子域。让我的网站在http://www.domain.com 有两页http://www.domain.com/page1 和http://www.domain.com/page2我想让他们在http://page1.domain.com &;http://page2.domain.com 分别地此外,我可能有子页面到第1页,我想访问使用主页的子域。我是说如果http://www.domain.com/page1/subpage1 是