乌徒帮技术范儿WordPressWordPress开发 › wordpress文章内容除去文本之外的标签并分段

wordpress文章内容除去文本之外的标签并分段

分类:WordPress开发

前段时间在写新模板的时候,希望在首页将文章的文本部分显示出来,而图片、视频等信息就不显示了。但中间遇到一些问题,如虽然只有文字,但没有分段,分了段又发现多段落等情况。今天我们就来在首页只调用文章的文本部分,并实现给文本分段。

我的方法是自己撰写一个函数,在首页调用该函数。函数如下

function get_content_p($post){
if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$matches)){
//如果是使用 Windows Live Writer 这些工具写日志,可能使用<p>和</p>进行分段
foreach($matches as $match)$output.=$match;
}else{
//如果直接在 WordPress 写日志,使用换行符(\n)来分段
$post_content = explode("\n",trim(strip_tags($post->post_content,'<a>')));
foreach($post_content as $content)$output.='<p>'.$content.'</p>';
}
return $output;
}
function the_content_p($post){
echo get_content_p($post);
}

将该函数放置在模板文件的functions.php末尾,这样你就可以在模板任意地方调用get_content_p()和the_content_p()函数了。

下面大致讲解一下这个函数。在定义函数时,传入$post全局变量,即文章变量。

trim(strip_tags($post->post_content,"<p>"))可以将文章内容中除了<p>之外的所有标签去除,这样就只剩下了段落标签。

explode("\n",trim(strip_tags($post->post_content,'<a>')));是以"\n"为分隔符,将文章内容(去除<a>之外的标签后)分成很多元素,然后组成数组,被存放在$post_content中,再利用foreach对该数组添加效果,最终实现了为每行添加<p>。

上面这段代码不但让$post->post_content中分段的问题得到解决,同时还考虑到了用writer等工具写文章时留下的分段效果,是比较不错了。

如果你也想只调用文章的文字部分,那就试试吧!

填写个人信息,赶快回复吧!