MENU

非插件给WP文章添加悬浮目录

June 14, 2020 • 阅读: 1086 • 笔记&折腾



使用非插件的方式给文章添加目录,使其悬浮在页面右侧

在function.php中添加代码:

// 目录区
function article_nav($content)
{
    $matches = array();
    $ul_li = '';
    $r = "/<h2>(.*?)<\/h2>/im";
    if (preg_match_all($r, $content, $matches)) {
        foreach ($matches[1] as $num => $title) {
            $content = str_replace($matches[0][$num], '<h2 id="article_nav_' . $num . '">' . $title . '</h2>', $content);
            $ul_li .= '<li><a href="#article_nav_' . $num . '" title="' . $title . '">' . $title . "</a></li>";
        }
        if (is_singular()) {
            $content = '<div id="fn_article_nav"><div id="article_nav_title">[文章目录]</div><ul>'
                . $ul_li . '<li><a href="#respond">发表评论</a></li></ul></div>' . $content;
        }
    }
    return $content;
}
add_filter("the_content", "article_nav");
//目录区

然后在主题中添加CSS:

/*------目录区 --------*/
#article_nav_title{font-size:12px;text-align:center;line-height:15px;color:#cc0000;border-left:3px #cc0000 solid;border-bottom:1px #aaa dotted}
#fn_article_nav{position:fixed;right:20px;bottom:140px;background-color:rgba(255,255,255,.55);border-radius: 0 3px 3px 0;box-shadow:0 0 2px #aaa;z-index:1}
#fn_article_nav ul{padding:0!important;margin:0px!important}
#fn_article_nav li{list-style:none;padding:3px;width:150px;margin:0;text-indent: 1.6em;font-size:12px;color:#cc0000}
/*------目录区 --------*/

注意:此方法适用于一般编辑器(主题自带编辑器),如果<h2>中加了id大概不适用?




灾难总是接踵而至,这正是世间真理,你以为只要解释一下就会有人来救你吗?
------《海贼王》索隆

Last Modified: February 6, 2021