什么是文章存檔頁面?WordPress中怎么輕松建立文章存檔頁面?下面本篇文章給大家介紹一下WordPress中建立存檔頁面的3種方法,希望對大家有所幫助!
可能你會問,什么是文章存檔頁面,有什么用?開始之前,我們先來感性認識一下什么是存檔頁面,請點擊查看本站的 Sitemap。你可以看到這個存檔頁面列出我博客上所有文章和所有的頁面,一個方面如果讀者想一下子看到本站的文章,那么到此頁面來看就輕松多了;另外據說對SEO有幫助,目前我還沒有證實。最后,你可能已經意識到,原來網站根目錄下不是有個sitemap.xml了嗎?為什么還要創建這樣的存檔頁面呢?其實sitemap.xml是給搜索引擎蜘蛛看,而這個存檔頁面是弄給人看的。下面我來講講如何創建這頁面,感興趣的可以看看。
方法一:SQL讀取數據庫
方法一展示的存檔頁面效果就是本站的Sitemap效果,其實就是創建一個自定義的頁面模板,操作起來也很簡單,不需要你懂太多的編程技術,唯一要配置的就是修改sitemap.xml的鏈接。方法一的優點是,我使用的是SQL直接從數據庫中讀取數據,而且只進行兩次數據庫連接,避免了使用WordPress內置函數,速度相對來說會快那么一點點;缺點是,你要復制的代碼相對來說長點。下面看看具體步驟:
1、在當前主題目錄下新建一個php文件,命名為sitemap.php,然后將page.php中的所有代碼復制到sitemap.php中
2、刪除sitemap.php開頭的所有注釋,即 /* 與 */ ,以及它們之間的所有內容
3、將第一個 <?php 改成
<?php /* * Template Name: sitemap * @author: zzTuKu.com * @Blog : https://www.zztuku.com/ */
4、將 <?php the_content(); ?>
改成:
<div class="myArchive"> <ul> <?php /** * WordPress分類存檔頁面 * 作者:站長圖庫 * 博客:https://www.zztuku.com/ * 最后修改:2012年8月27日 */ $categoryPosts = $wpdb->get_results(" SELECT post_title, ID, post_name, slug, {$wpdb->prefix}terms.term_id AS catID, {$wpdb->prefix}terms.name AS categoryname FROM {$wpdb->prefix}posts, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy, {$wpdb->prefix}terms WHERE {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id AND {$wpdb->prefix}terms.term_id = {$wpdb->prefix}term_taxonomy.term_id AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id AND {$wpdb->prefix}term_taxonomy.taxonomy = 'category' AND {$wpdb->prefix}posts.post_status = 'publish' AND {$wpdb->prefix}posts.post_type = 'post' ORDER BY {$wpdb->prefix}terms.term_id, {$wpdb->prefix}posts.post_date DESC"); $postID = 0; if ( $categoryPosts ) : $category = $categoryPosts[0]->catID; foreach ($categoryPosts as $key => $mypost) : if($postID == 0) { echo '<li><strong>分類:</strong> <a title="'.$mypost->categoryname.'" href="'.get_category_link($mypost->catID).'">'.$mypost->categoryname."</a>\n"; echo '<ul>'; } if($category == $mypost->catID) { ?> <li><a title="<?php echo $mypost->post_title; ?>" href="<?php echo get_permalink( $mypost->ID ); ?>"><?php echo $mypost->post_title; ?></a></li> <?php $category = $mypost->catID; $postID++; } else { echo "</ul>\n</li>"; echo '<li><strong>分類:</strong> <a title="'.$mypost->categoryname.'" href="'.get_category_link($mypost->catID).'">'.$mypost->categoryname."</a>\n"; echo '<ul>'; ?> <li><a title="<?php echo $mypost->post_title; ?>" href="<?php echo get_permalink( $mypost->ID ); ?>"><?php echo $mypost->post_title; ?></a></li> <?php $category = $mypost->catID; $postID = 1; } endforeach; endif; echo "</ul>\n</li>"; ?> <li><strong>頁面</strong> <ul> <?php // 讀取所有頁面 $mypages = $wpdb->get_results(" SELECT post_title, post_name, ID FROM {$wpdb->prefix}posts WHERE post_status = 'publish' AND post_type = 'page'"); if ( $mypages ) : foreach ($mypages as $mypage) : ?> <li><a title="<?php echo $mypage->post_title; ?>" href="<?php echo get_permalink( $mypage->ID ); ?>"><?php echo $mypage->post_title; ?></a></li> <?php endforeach; echo "</ul>\n</li>"; endif; ?> </ul> <p><a href="https://www.zztuku.com/sitemap.xml">查看 sitemap.xml</a></p> </div>
最后將最后第二行的 https://www.zztuku.com/sitemap.xml
改成你自己的 sitemap.xml 鏈接就可以了,修改完之后記得用UTF-8編碼保存,否則中文可能會亂碼。
上面的代碼直接用到你的WordPress站點中理論上講是沒多大問題,但是可能在美觀程度上會有一定的問題,你可以根據個人能力用CSS稍微修飾一下就可以了,另外我這里提供了一個CSS的范例,你可以參考,復制到主題目錄下的style.css中,可能會達到本站sitemap的樣式效果:
.myArchive { line-height:18px; margin:1.5em 0; color:#555555; font-size:14px; } .myArchive h2 { font-size:16px; margin:0 0 10px; font-weight:bold; } .myArchive ul { line-height:21px; padding:0 0 0 2em; } .myArchive ul li { background:none; list-style-type:disc; margin:0; padding-left:10px; } .myArchive a { color:#2970A6; outline:medium none; text-decoration:none; } .myArchive a:hover { text-decoration:underline; } .myArchive ul li ul { margin:10px 0; } .myArchive ul li ul li { list-style-type:circle; }
5、進入WordPress管理后臺 - 頁面 - 創建頁面,標題為文章存檔(可以自己起名),內容不要填,右側可以選擇模板,選擇 sitemap 即可
6、文章存檔頁就創建成功了。
方法二:使用wp_get_archives函數
方法二的操作也很簡單,代碼量更少,不過這里只是純粹地列出所有的文章,并不會像方法一那樣按分類來列出文章,略顯單調,不過如果嫌方法一麻煩的話可以試試。下面是具體操作方法:
1~3步跟方法一是一樣的,第4步:
將 the_content();
改成以下代碼就可以了:
echo '<ul>'; wp_get_archives('type=postbypost&show_post_count=1'); echo '</ul>';
5~6步也跟方法一一樣。
方法三:使用插件
關于WordPress存檔頁面的插件由很多,感興趣的話,請自行搜索,這里就不仔細介紹。