Paginated HTML Sitemap

时间:2012-01-12 作者:Vila

我已经到了需要将HTML站点地图分解为几个页面的地步。它包含2000多个链接。

大版面是在一页上显示类别名称下的所有帖子标题。我决定使用WP\\u查询按字母顺序对其进行分解(分页),这样每个页面将包含大约60个帖子标题(链接)。此外,在帖子标题旁边的每一页上,都会显示相应的类别链接,以及另一个自定义分类法。

我做到了,我想一切都会好起来的,无论是谷歌还是用户。然而不久之后,我收到了大量电子邮件。用户不喜欢HTML网站地图的新分页/字母顺序外观。他们希望从一个页面(或尽可能少的页面)快速访问所有帖子。我转过身来。

我不能保留那个大页面,但同时我必须与用户保持一致。

那么,有没有一种方法可以将HTML站点地图拆分为多个页面,每个页面都包含来自多个类别的帖子标题(链接)?

我可以通过创建几个模板并对每个模板的分页进行硬编码(链接它们)来实现这一点,但这是一种困难的方式。

我已经研究了多个循环、嵌套循环、自定义查询、WP\\u查询,并进行了很多实验,但似乎我无法以优雅而简洁的方式实现我想要的。

1 个回复
SO网友:mor7ifer

还没有测试过这个,但给你,莱米知道它是怎么工作的。您将需要一个自己的分页链接,但这应该非常简单

//pagination
$offset = \'0\';
$no_of_posts = the_posts_per_page( false ); //Number of posts to display on each page
if (preg_match( \'/page/\', $_SERVER[\'REQUEST_URI\'] ) ) {
    $uri = explode( \'/\', $_SERVER[\'REQUEST_URI\'] );
    foreach ( $uri as $key => $value ) {
        if ( $value == \'\' ) {
        unset( $uri[$key] );
        }
    }
    $offset = array_pop( $uri );
    $sql_offset = ( $offset * $no_of_posts ) - $no_of_posts;
}
//get categories
my_category_build( array(), 0 );

//function
function my_category_build( $args, $offset = 0  ) {

    //set defaults
    $defaults = array(
        \'type\'                     => \'post\',
        \'parent\'                   => 0,
        \'orderby\'                  => \'name\',
        \'order\'                    => \'ASC\',
        \'hide_empty\'               => 1,
        \'hierarchical\'             => 1,
        \'taxonomy\'                 => \'category\',
        \'pad_counts\'               => 1
    );

    //parse args
    $args = wp_parse_args( $args, $defaults );

    //do real work
    $categories = get_categories( $args );
    $cat_c = count( $categories );
    for( $i=$offset; $i<$offset+2 && $i<$cat_c; $i++ ) {
        //set current category object
        $categories[$i] = $cat;

        //drill down deeper
        $args[\'parent\'] = $cat->cat_ID;
        $children = get_categories( $args );
        if( count( $children ) > 0 ) {
            my_category_build( $args );
        }

        //output posts from category
        $wp_query_args = array(
            \'posts_per_page\' => -1,
            \'post_status\'    => \'publish\',
            \'cat\'            => $cat->cat_ID
        );
        $posts = new WP_Query( $wp_query_args );
        foreach( $posts as $p ) {
            //your output here
        }
    }
}

结束

相关推荐

Open Graph in Index Loop

我有一个帖子索引,我想为每个帖子插入一个类似Facebook的按钮。到目前为止,我已经为单个帖子在head中设置了所有打开的图形数据。关于在循环中使用开放图形数据(特别是缩略图)有什么想法吗?