WordPress网站document主题修改调整记录

老白博客目前使用的主题为WordPress的document主题,以下是个人对该主题进行的一些调整,仅供参考

WordPress网站document主题修改调整记录

1. css修改

调整了首页站点logo显示的位置和大小

          html body .main-header .left a.logo img {
            height: 150%;
            min-width: 30px;
            margin-right: 1rem; }

作者小工具页面简单调整了高度

html body .main-container #fixed .main-right .author .author-beijin img {
  width: 16.6rem;
  height: 6.2rem;
}

2.侧边栏评论用户头像

这里不知道是啥原因,document主题首页侧边栏最近评论的头像都不能读取到正确的头像,就还是在WordPress后台设置的那个,所以我干脆直接写死,弄到本地

文件地址:template/widget/comments.php,直接替换为下面的代码即可

<?php

/*
 * 侧边栏最新文章
 * @author 友人a丶
 * @date 2022-07-08
 * */

?>

<div class="div-info">
    <div class="header">
        <ul>
            <li class="active"><?php echo $title; ?></li>
            <!-- <li>修改记录</li>-->
        </ul>
    </div>
    <ul class="ul" style="margin-top: 0.5rem;">

        <?php
        /*
         * 判断显示类型
         * */
        $comments = get_comments([
            "number" => $number,
            'status' => 'approve',
            "orderby" => "comment_date_gmt",
            "include_unapproved" => false
        ]);

        /*
         * 递归显示文章
         * */

        foreach ($comments as $comment) {

            // 将头像地址统一调整为指定的地址
            $avatar = 'https://www.xcbtmw.com/wp-content/uploads/2023/08/default.webp'; // 替换为您的默认头像地址

            echo '<li>
                <div class="comment-widget">
                <img class="author-avatar" src="' . $avatar . '" title="头像"/>
                   <a href="' . get_comment_link( $comment ) . '" title="' . $comment->comment_content . '">
                        <span class="name">
                         ' . $comment->comment_author . '
                         </span>
                        <span class="comment-widget-content"> 
                             ' . $comment->comment_content . '
                        </span>
                    </a>
                </div>
            </li>';

        }
        wp_reset_query(); //重置文章指指针
        ?>
    </ul>

</div>

3 .评论表单

修改为填写昵称后即可评论

<input placeholder="昵称" name="author" type="text" class="comment-name" value="<?php echo $nickname ?>" required/>
<input placeholder="邮箱" name="email" type="email" class="comment-mail" value="<?php echo $email ?>"/>
<input placeholder="网址" name="url" type="url" class="comment-url" value="<?php echo $webUrl ?>"/>

4.文章自动添加超链接并内链

下面两个

/* 自动为文章添加标签-老白博客 */
add_action('save_post', 'auto_add_tags');
function auto_add_tags(){
    $tags = get_tags( array('hide_empty' => false) );
    $post_id = get_the_ID();
    $post_content = get_post($post_id)->post_content;
    if ($tags) {
        foreach ( $tags as $tag ) {
            // 如果文章内容中含已用过的标签,自动添加这些标签
            if ( strpos($post_content, $tag->name) !== false)
                wp_set_post_tags( $post_id, $tag->name, true );
        }
    }
}

添加内链(注意看注释)

/*文章标签添加内链-老白博客*/
//按长度排序
function tag_sort($a, $b) 
{
	if($a->name == $b->name) return 0;
	return (strlen($a->name) > strlen($b->name) ) ? -1 : 1;
}
//改变标签关键字
function tag_link($content) 
{
    //连接数量
    $match_num_from = 1; //一篇文章中同一个关键字少于多少不锚文本(这个直接填1就好了)
    $match_num_to = 1; //一篇文章中同一个关键字最多出现多少次锚文本(建议不超过1次)
	$posttags = get_the_tags();
	if ($posttags) {
		usort($posttags, "tag_sort");
		foreach($posttags as $tag) 
        {
			$link = get_tag_link($tag->term_id);
			$keyword = $tag->name;
			//连接代码
			$cleankeyword = stripslashes($keyword);
			$url = "<a href="$link" title="".str_replace('%s',addcslashes($cleankeyword, '$'),__('查看所有文章关于 %s')).""";
			$url .= 'target="_blank"';
			$url .= ">".addcslashes($cleankeyword, '$')."</a>";
			$limit = rand($match_num_from,$match_num_to);
			//不连接的代码
            $ex_word = ''; $case='';
			$content = preg_replace( '|(<a[^>]+>)(.*)('.$ex_word.')(.*)(</a[^>]*>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
			$content = preg_replace( '|(<img)(.*?)('.$ex_word.')(.*?)(>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
			$cleankeyword = preg_quote($cleankeyword,''');
			$regEx = ''(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))'s' . $case;
			$content = preg_replace($regEx,$url,$content,$limit);
			$content = str_replace( '%&&&&&%', stripslashes($ex_word), $content);
		}
	}
	return $content;
}
add_filter('the_content','tag_link',1); //连接到WordPress的模块
/*文章标签添加内链-老白博客*/

5.侧边栏最新评论

文件地址:/template/widget,comments.php文件

修改前:原来点击最新评论时,是跳转对应的评论文章页面

<a href="' . get_the_permalink( $comment->comment_post_ID ) . '" title="' . $comment->comment_content . '">

修改后:修改为跳转对应的评论链接

<a href="' . get_comment_link( $comment ) . '" title="' . $comment->comment_content . '">

6.侧边栏点赞

文件位置:/common/inline/monitor.js

修改前:点赞可以持续点击,单个用户可以无限制点赞

    /*
    * 文章踩、文章点赞
    * */
    (function () {

        $('.icp-beian div').click(function () {

            /*
            * 判断点赞的是哪一个
            * */
            if ($('.icp-beian div').index(this) == 0) {
                /*
                * 点赞
                * */
                let that = $(this);
                $.post(location.pathname + "?nice=" + Current, function (res) {
                    that.find('span').text(parseInt(that.find('span').text()) + 1);
                });
            } else {
                /*
                  * 踩
                  * */
                let that = $(this);
                $.post(location.pathname + "?bad=" + Current, function (res) {
                    that.find('span').text(parseInt(that.find('span').text()) + 1);
                });
            }

        });
    })();

修改后:点赞和点踩都只能点击一次,增加了一个判断

/*
* 文章踩、文章点赞
* */
(function () {

    // 设置变量来记录是否已经进行过点赞或踩操作
    let hasVoted = false;

    $('.icp-beian div').click(function () {
        // 如果已经进行过点赞或踩操作,则直接返回
        if (hasVoted) {
            return;
        }

        // 判断是点赞还是踩操作
        if ($('.icp-beian div').index(this) == 0) {
            /*
            * 点赞
            * */
            let that = $(this);
            $.post(location.pathname + "?nice=" + Current, function (res) {
                that.find('span').text(parseInt(that.find('span').text()) + 1);
            });
        } else {
            /*
              * 踩
              * */
            let that = $(this);
            $.post(location.pathname + "?bad=" + Current, function (res) {
                that.find('span').text(parseInt(that.find('span').text()) + 1);
            });
        }

        // 将hasVoted标记为true,表示已经进行过点赞或踩操作
        hasVoted = true;
    });
})();

7.加密文章阅读

修改文件:single.php

修改后效果:管理员账户不用输入密码就能查看

在“是否需要输入密码”的前面添加下面的代码即可

//管理员免输入密码即可查看加密文章
if ( current_user_can( 'administrator' ) ) {
add_filter( 'post_password_required', '__return_false' );
}