WordPress非外掛程式添加文章目錄功能

本文目錄1用代碼實現文章目錄2使用說明3CSS樣式參考

給文章添加文章目錄功能,不僅是文章條理更清楚,還有利於SEO,下面將介紹 露兜 老大的使用代碼來實現文章目錄的方法,方便喜歡折騰代碼的朋友,如果你不想折騰代碼,你可以試試下面的WordPress文章目錄外掛:TOC 和 Content Index for WordPress。

用代碼實現文章目錄

1.將下面的代碼添加到主題的 functions.php 文件的 最後一個 ?> 前面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function article_index($content) {
    /**
     * 名稱:文章目錄外掛
     * 作者:露兜
     * 部落格:http://www.ludou.org/
     * 最後修改:2011年2月10日
     */
 
    $matches = array();
    $ul_li = '';
 
    $r = "/<h3>([^<]+)</h3>/im";
 
    if(preg_match_all($r, $content, $matches)) {
        foreach($matches[1] as $num => $title) {
            $content = str_replace($matches[0][$num], '<h3 id="title-'.$num.'">'.$title.'</h3>', $content);
            $ul_li .= '<li><a href="#title-'.$num.'" title="'.$title.'">'.$title."</a></li>n";
        }
 
        $content = "n<div id="article-index">
                <strong>文章目錄</strong>
                <ul id="index-ul">n" . $ul_li . "</ul>
            </div>n" . $content;
    }
 
    return $content;
}
 
add_filter( "the_content", "article_index" );

function article_index($content) {
/**
* 名稱:文章目錄外掛
* 作者:露兜
* 部落格:http://www.ludou.org/
* 最後修改:2011年2月10日
*/ $matches = array();
$ul_li = ”; $r = "/<h3>([^<]+)</h3>/im"; if(preg_match_all($r, $content, $matches)) {
foreach($matches[1] as $num => $title) {
$content = str_replace($matches[0][$num], ‘<h3 id="title-‘.$num.’">’.$title.'</h3>’, $content);
$ul_li .= ‘<li><a href="#title-‘.$num.’" title="’.$title.’">’.$title."</a></li>n";
} $content = "n<div id="article-index">
<strong>文章目錄</strong>
<ul id="index-ul">n" . $ul_li . "</ul>
</div>n" . $content;
} return $content;
} add_filter( "the_content", "article_index" );

使用說明

在編輯文章的時候,在可視化模式下,選中文字,設置為標題3(H3),或者切換到HTML模式,將需要添加到目錄中的標題用<h3>和</h3>括起來就可以瞭,如<h3>我是索引標題</h3>。當然你也可以用其他標簽,如<h2>,<p>等,將以上代碼第12行中的h3改成你自己的標簽名稱就可以瞭。

CSS樣式參考

為瞭實現前臺的顯示效果,你可以參考下面的css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#article-index {
    -moz-border-radius: 6px 6px 6px 6px;
    border: 1px solid #DEDFE1;
    float: right;
    margin: 0 0 15px 15px;
    padding: 0 6px;
    width: 200px;
    line-height: 23px;
}
#article-index strong {
    border-bottom: 1px dashed #DDDDDD;
    display: block;
    line-height: 30px;
    padding: 0 4px;
}
#index-ul {
    margin: 0;
    padding-bottom: 10px;
}
#index-ul li {
    background: none repeat scroll 0 0 transparent;
    list-style-type: disc;
    padding: 0;
    margin-left: 20px;
}

#article-index {
-moz-border-radius: 6px 6px 6px 6px;
border: 1px solid #DEDFE1;
float: right;
margin: 0 0 15px 15px;
padding: 0 6px;
width: 200px;
line-height: 23px;
}
#article-index strong {
border-bottom: 1px dashed #DDDDDD;
display: block;
line-height: 30px;
padding: 0 4px;
}
#index-ul {
margin: 0;
padding-bottom: 10px;
}
#index-ul li {
background: none repeat scroll 0 0 transparent;
list-style-type: disc;
padding: 0;
margin-left: 20px;
}

以上代碼的功能比較單一,隻有單級目錄,不能實現多層級的復雜而完善的索引目錄功能,如果你需要這些功能,那你就要借助文章目錄外掛:TOC 和 Content Index for WordPress。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *