如何创建主存档?

时间:2012-04-22 作者:octonaut

我正在尝试创建一个主档案,我想也许有人可以帮我。

我现在设置它的方式非常简单。我有作者档案,只列出某个作者的每篇文章,如下所示:

http://www.viiinothing.com/author/ryan/

我想做的是创建一个与此相同的主存档,只是它显示每个作者的每一篇文章。

我尝试了多种方法来完成这项工作,包括查询帖子和获取归档,但我所能完成的只是显示最近十篇帖子的列表。但是,页码以及“旧的”、“新的”和页码将不会显示在底部(请参阅链接)。我希望这是有意义的。我知道为什么它没有这样做,但我仍然不知道如何让它像作者档案一样工作。

非常感谢。

1 个回复
SO网友:Tara

为了实现这一点,我为我的博客做了以下工作:(1)创建一个页面模板,比如“masterarcive”(2)在该页面中添加代码。(3) 此代码还包括分页

这是我的整个页面模板,其中包含我使用的完整代码:

<?php
/**
 * @package WordPress
 * @subpackage Default_Theme
 */
/*
Template Name: masterarchive
*/


get_header(); ?>

<div id="container">
            <div id="content" role="main">

<?php
$args=array(
  //\'category__in\' => array(1),
  \'post_type\' => \'post\',
  \'post_status\' => \'publish\',
  \'showposts\' => -1,
  \'caller_get_posts\'=> 1
);
$poststocount=get_posts($args);
echo \'<h2>Alphabetic Index of All \'. count($poststocount). \' Posts:</h2>\';

$args = array(\'type\' => \'alpha\', \'echo\' => 0, \'after\' => \'~\');
$archivestring = wp_get_archives($args);
$archives = preg_split(\'/[~]/\',$archivestring);
if ($archives) :
   $limit = 60;
   if (isset($_GET[\'page\'])) {
      $page = $_GET[\'page\'];
   } else {
      $page = 1;
   }
   $start = ($page - 1) * $limit;
   $range = 5;
   echo \'<h2></h2>\';
   echo \'<ul>\';
   for ($i=$start;$i<($start + $limit);++$i) {
      if ($i < sizeof($archives)) {
         echo $archives[$i];
      }
   }
   echo \'<br /><br />\'; // remove <br /><br />
   echo _YOUR_paginate(sizeof($archives),$limit,$range);
   echo \'</ul>\';    // remove </li></ul>
else:
   echo \'<h2></h2>\';
   echo \'There are no Archives to list\';
endif;?>
</div></div> <!-- added one </div> -->
<?php get_sidebar(); ?>

<?php get_footer(); ?>

<?php function _YOUR_paginate($numrows,$limit=10,$range=7) {

    $pagelinks = "";  
   if(isset($_GET[\'page\'])){
      $page = $_GET[\'page\'];
   } else {
      $page = 1;
   }
   // If query_string exists, use &page=, else use ?page= .
   $currpage = $_SERVER[\'REQUEST_URI\'];
   $qstring = preg_replace(\'/page=\\d+/\',\'\',$_SERVER[\'QUERY_STRING\']);  // Get rid of previous page=
   if ($qstring) {
      $paramsep = \'&amp;\';
   } else {
      $paramsep = \'?\';
   }
    if ($numrows > $limit) {
        //$currpage = str_replace("&page=".$page,"",$currpage); // Use this for non-pretty permalink
        $currpage = str_replace("?page=".$page,"",$currpage); // Use this for pretty permalink
        if($page == 1){
            $pagelinks .= "<span class=\\"pageprevdead\\">&laquo; PREV </span>";
        }else{
            $pageprev = $page - 1;
            $pagelinks .= "<a class=\\"pageprevlink\\" href=\\"" . $currpage .
                    "{$paramsep}page=" . $pageprev . "\\">&laquo; PREV </a>";
        }
        $numofpages = ceil($numrows / $limit);
        if ($range == "" or $range == 0) $range = 7;
        $lrange = max(1,$page-(($range-1)/2));
        $rrange = min($numofpages,$page+(($range-1)/2));
        if (($rrange - $lrange) < ($range - 1)) {
            if ($lrange == 1) {
                $rrange = min($lrange + ($range-1), $numofpages);
            } else {
                $lrange = max($rrange - ($range-1), 0);
            }
        }
        if ($lrange > 1) {
            $pagelinks .= "<a class=\\"pagenumlink\\" " .
                "href=\\"" . $currpage . "{$paramsep}page=" . 1 . 
                "\\"> [1] </a>";
            if ($lrange > 2) $pagelinks .= "&nbsp;...&nbsp;";
        } else {
            $pagelinks .= "&nbsp;&nbsp;";
        }
        for($i = 1; $i <= $numofpages; $i++){
            if ($i == $page) {
                $pagelinks .= "<span class=\\"pagenumon\\"> [$i] </span>";
            } else {
                if ($lrange <= $i and $i <= $rrange) {
                    $pagelinks .= "<a class=\\"pagenumlink\\" " .
                        "href=\\"" . $currpage . "{$paramsep}page=" . $i . 
                        "\\"> [" . $i . "] </a>";
                }
            }
        }
        if ($rrange < $numofpages) {
            if ($rrange < $numofpages - 1) $pagelinks .= "&nbsp;...&nbsp;";
                $pagelinks .= "<a class=\\"pagenumlink\\" " .
                    "href=\\"" . $currpage . "{$paramsep}page=" . $numofpages . 
                    "\\"> [" . $numofpages . "] </a>";
        } else {
            $pagelinks .= "&nbsp;&nbsp;";
        }
        if(($numrows - ($limit * $page)) > 0){
            $pagenext = $page + 1;
            $pagelinks .= "<a class=\\"pagenextlink\\" href=\\"" . $currpage .
                    "{$paramsep}page=" . $pagenext . "\\"> NEXT &raquo;</a>";
        } else {
            $pagelinks .= "<span class=\\"pagenextdead\\"> NEXT &raquo;</span>";
        }

   }

return $pagelinks;
}
?>

结束

相关推荐

显示Archives.php中的所有自定义帖子类型

我该怎么做?archive.php 只有以下内容:wp_get_archives(\'type=monthly\'); 以及wp_get_archives() 没有显示所有帖子类型的参数。我也认为archive-[post_type].php 不是我要找的,因为我希望所有帖子类型都显示在一个归档页面中。谢谢W