您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
5-2: 文章正文自动截取、给嵌套评论添加回复关系信息
发布时间:2023-03-26 23:47:57编辑:雪饮阅读()
本次主要是实现文章正文自动截取以及给嵌套评论添加回复关系信息。
给文章正文进行截取一般于列表页中做超过n个字符后做省略号处理或者做类似“more”的处理。实际上这种学过之前的一些内容后也可以自己实现,但这里老师有写好现成的。另外一个就是这里多了解了一丢丢的经验,之前我自己做的时候没有考虑过要去除html,不过由于之前大都是在cms中基本用cms自身标签的所以想的不深,可能cms都处理过了,而自己做的时候就要考虑下,比如你文章列表区域假如有个标题是h1标签,如果你文章正文正好截取部分有h1标签,岂不是和你的文章列表区域的标题一样大了。。。。
除了文章正文自动截取以外,这里还了解下给嵌套评论添加回复关系信息。其实我觉得他这是有点多余了,因为人家本来这种结构就是给某个人回复后,则回复的信息会在某个人的那条评论下面缩进的。缩进后就是回复者谁谁谁说道xxxxx之类的。老师的意思是不仅要看到谁谁谁,还要看到他是对谁谁谁说的,像是这种已经缩进于人家回复信息下面了,肯定是知道回复谁的。。。,并且他的这个实现方法在我这里无效,可能是有环境版本什么的细节差异吧,反正是一个不太重要的东西,也没有细究。
那么不管是文章正文自动截取是否是否多余,或者嵌套评论添加回复关系是否有效以及是否多余。我这里都提供下老师的实现。
首先是functions.php
<?php
/*
截取正文
param int $len要截取的字符数量
@param string $suffix如果发生截取,添加什么标记@return string
*/
function wordpresskt_strim_post_content($len = 100,$suffix= '...'){
//获取正文信息,并做必要处理
$content = get_the_content();
$content = apply_filters('the_content',$content);
//去除正文中的HTML标签
$content =str_replace( ']]>',']]>', $content);
$content = strip_tags($content);
if (mb_strlen($content) <= $len ) {
//字符数量少于要截取的长度,则展示全部
return $content;
}
else {
//截取指定长度的字符
return $content = mb_substr( $content,0,$len ).$suffix;
}
}
function wpktcore_who_resp_who($out,$author,$comment_id) {
$comment = get_comment($comment_id);
//如果没有父级评论,则正常返回,因为没有回复关系
if (empty($comment->comment_parent))
{
return $out;
}
//如果有父级评论,则添加回复关系
//获取父《原〉评论
$parent = get_comment($comment->comment_parent);
//获取父(原)评论作者
$pauthor = get_comment_author($parent);
//构件回复关系
$pcid = '#comment-' . $parent->comment_ID;
$new = $out . '回复'. "<a href='{$pcid}'>{$pauthor}</a>";
//返回修改后的评论数据
return $new;
}
/*
add_filter
第三个参数是所挂函数于钩子上的优先级,默认是10,
第四个参数是所挂钩子上的函数需要接收的参数个数
*/
add_filter('get_comment_author_link ','wpktcore_who_resp_who',10,3);
?>
然后文章正文自动截取是在归档archive.php实现
<?php if(have_posts()):?>
<?php while(have_posts()):the_post();?>
<div style="border:1px solid pink;">
<h1>正文截取</h1>
<div>
<?php
echo wordpresskt_strim_post_content(50);
?>
</div>
</div>
<?php endwhile; ?>
<?php else: ?>
<p>对不起,暂时没有任何内容!</p>
<?php endif;?>
然后嵌套评论添加回复关系信息则是在single.php中实现
<?php if(have_posts()):?>
<?php while(have_posts()):the_post();?>
<div style="border:1px solid pink;">
<h1>评论区</h1>
<div>
<?php comments_template();?>
</div>
</div>
<?php endwhile; ?>
<?php else: ?>
<p>对不起,暂时没有任何内容!</p>
<?php endif;?>
关键字词:正文,截取,嵌套,评论,回复,关系,信息