下面是小编帮大家整理的WordPress实现相关文章功能代码方法,本文共8篇,希望对大家带来帮助,欢迎大家分享。

篇1:WordPress实现相关文章功能代码方法
WordPress有很多实现相关文章功能的插件,插件的优点是配置简单,但是可能会对网站的速度造成一些小的影响,所以很多人还是比较喜欢用代码实现需要的功能,但是话又说回来了,代码实现也有缺点,就是配置复杂,不懂代码的人完全摸不着头脑或者只能照搬别人的代码,还不如用插件,
* 文章标题1
* 文章标题2
......
方法一:标签相关
首先获取文章的所有标签,接着获取这些标签下的 n 篇文章,那么这 n 篇文章就是与该文章相关的文章了。现在可以见到的WordPress相关文章插件都是使用的这个方法。下面是实现的代码:
$post_tags = wp_get_post_tags($post->ID);
if ($post_tags) {
foreach ($post_tags as $tag)
{
// 获取标签列表
$tag_list[] .= $tag->term_id;
}
// 随机获取标签列表中的一个标签
$post_tag = $tag_list[ mt_rand(0, count($tag_list) - 1) ];
// 该方法使用 query_posts 函数来调用相关文章,以下是参数列表
$args = array(
'tag__in' => array($post_tag),
'category__not_in' => array(NULL), // 不包括的分类ID
'post__not_in' => array($post->ID),
'showposts' => 6, // 显示相关文章数量
'caller_get_posts' => 1
);
query_posts($args);
if (have_posts()) :
while (have_posts()) : the_post(); update_post_caches($posts); ?>
* “ rel=”bookmark“ title=”
* 暂无相关文章
使用说明:”不包括的分类ID” 指的是相关文章不显示该分类下的文章,将同行的 NULL 改成文章分类的ID即可,多个ID就用半角逗号隔开。因为这里限制只显示6篇相关文章,所以不管给 query_posts() 的参数 tag__in 赋多少个值,都是只显示一个标签下的 6 篇文章,除非第一个标签有1篇,第二个标签有2篇,第三个有3篇。。。。。。所以如果这篇文章有多个标签,那么我们采取的做法是随机获取一个标签的id,赋值给 tag__in 这个参数,获取该标签下的6篇文章。
方法二:分类相关
本方法是通过获取该文章的分类id,然后获取该分类下的文章,来达到获取相关文章的目的。
$cats = wp_get_post_categories($post->ID);
if ($cats) {
$cat = get_category( $cats[0] );
$first_cat = $cat->cat_ID;
$args = array(
'category__in' => array($first_cat),
'post__not_in' => array($post->ID),
'showposts' => 6,
'caller_get_posts' => 1);
query_posts($args);
if (have_posts()) :
while (have_posts()) : the_post(); update_post_caches($posts); ?>
* “ rel=”bookmark“ title=”
?>“>
* 暂无相关文章
方法三:标签相关,SQL获取
获取相关文章的原理与方法一相似,不过在获取文章的时候是以SQL语句来直接读取数据库,从而随机获取6篇相关文章记录,而不是WordPress的函数query_posts().
$post_tags = wp_get_post_tags($post->ID);
if ($post_tags) {
foreach ($post_tags as $tag)
{
// 获取标签列表
$tag_list[] .= $tag->term_id;
}
// 随机获取标签列表中的一个标签
$post_tag = $tag_list[ mt_rand(0, count($tag_list) - 1) ];
$related = $wpdb->get_results(”
SELECT {$wpdb->prefix}posts.post_title, {$wpdb->prefix}posts.guid
FROM {$wpdb->prefix}posts, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy
WHERE {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id
AND {$wpdb->prefix}term_taxonomy.taxonomy = 'post_tag'
AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}
term_relationships.term_taxonomy_id
AND {$wpdb->prefix}posts.post_status = 'publish'
AND {$wpdb->prefix}posts.post_type = 'post'
AND {$wpdb->prefix}term_taxonomy.term_id = '“ . $post_tag . ”'
AND {$wpdb->prefix}posts.ID != '“ . $post->ID . ”'
ORDER BY RAND( )
LIMIT 6“);
// 以上代码中的 6 为限制只获取6篇相关文章
// 通过修改数字 6,可修改你想要的文章数量
if ( $related ) {
foreach ($related as $related_post) {
?>
* guid; ?>” rel=“bookmark”
title=“
* 暂无相关文章
方法四:分类相关,SQL获取
获取相关文章的原理与方法二相似,不过在获取文章的时候是以SQL语句来直接读取数据库,从而随机获取6篇相关文章记录,而不是WordPress的函数query_posts().
$cats = wp_get_post_categories($post->ID);
if ($cats) {
$cat = get_category( $cats[0] );
$first_cat = $cat->cat_ID;
$related = $wpdb->get_results(”
SELECT wp_posts.post_title, wp_posts.guid
FROM wp_posts, wp_term_relationships, wp_term_taxonomy
WHERE wp_posts.ID = wp_term_relationships.object_id
AND {$wpdb->prefix}term_taxonomy.taxonomy = 'category'
AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id
AND {$wpdb->prefix}posts.post_status = 'publish'
AND {$wpdb->prefix}posts.post_type = 'post'
AND {$wpdb->prefix}term_taxonomy.term_id = '“ . $first_cat . ”'
AND {$wpdb->prefix}posts.ID != '“ . $post->ID . ”'
ORDER BY RAND( )
LIMIT 6“);
if ( $related ) {
foreach ($related as $related_post) {
?>
* guid; ?>” rel=“bookmark”
title=“
* 暂无相关文章
方法五:作者相关
该方法是获取该文章作者的其他文章来充当相关文章,代码如下:
$post_author = get_the_author_meta( 'user_login' );
$args = array(
'author_name' => $post_author,
'post__not_in' => array($post->ID),
'showposts' => 6, // 显示相关文章数量
'orderby' => date, // 按时间排序
'caller_get_posts' => 1
);
query_posts($args);
if (have_posts()) :
while (have_posts()) : the_post(); update_post_caches($posts); ?>
* ” rel=“bookmark”
title=“
* 暂无相关文章
时间效率对比
我们将用之前的一个php代码对以上各个相关文章代码执行时间进行测算,以便对以上各个的方法进行效率,给你的选择提供参考,
以下是在同一篇文章中获取6篇相关文章,以上各方法最终测算的时间如下:
方法一:0.18067908287048 秒
方法二:0.057158946990967 秒
方法三:0.037126064300537 秒
方法四:0.045628070831299 秒
方法五:0.023991823196411 秒
篇2:WordPress代码实现相关文章的几种方法
WordPress有很多实现相关文章功能的插件,插件的优点是配置简 单,但是可能会对网站的速度造成一些小的影响,所以很多人还是比较喜欢用代码实现需要的功能,但是话又说回来了,代码实现也有缺点,就是配置复杂,不懂代 码的人完全摸不着头脑或者只能照搬别人的代码,还不如用插件,
* 文章标题1
* 文章标题2
......
方法一:标签相关
首先获取文章的所有标签,接着获取这些标签下的 n 篇文章,那么这 n 篇文章就是与该文章相关的文章了。现在可以见到的WordPress相关文章插件都是使用的这个方法。下面是实现的代码:
$post_tags = wp_get_post_tags($post->ID);
if ($post_tags) {
foreach ($post_tags as $tag)
{
// 获取标签列表
$tag_list[] .= $tag->term_id;
}
// 随机获取标签列表中的一个标签
$post_tag = $tag_list[ mt_rand(0, count($tag_list) - 1) ];
// 该方法使用 query_posts() 函数来调用相关文章,以下是参数列表
$args = array(
'tag__in' => array($post_tag),
'category__not_in' => array(NULL), // 不包括的分类ID
'post__not_in' => array($post->ID),
'showposts' => 6, // 显示相关文章数量
'caller_get_posts' => 1
);
query_posts($args);
if (have_posts()) :
while (have_posts()) : the_post(); update_post_caches($posts); ?>
* ” rel=“bookmark” title=“
* 暂无相关文章
使用说明:”不包括的分类ID” 指的是相关文章不显示该分类下的文章,将同行的 NULL 改成文章分类的ID即可,多个ID就用半角逗号隔开,
因为这里限制只显示6篇相关文章,所以不管给 query_posts() 的参数 tag__in 赋多少个值,都是只显示一个标签下的 6 篇文章,除非第一个标签有1篇,第二个标签有2篇,第三个有3篇。。。。。。所以如果这篇文章有多个标签,那么我们采取的做法是随机获取一个标签的id, 赋值给 tag__in 这个参数,获取该标签下的6篇文章。
方法二:分类相关
本方法是通过获取该文章的分类id,然后获取该分类下的文章,来达到获取相关文章的目的。
$cats = wp_get_post_categories($post->ID);
if ($cats) {
$cat = get_category( $cats[0] );
$first_cat = $cat->cat_ID;
$args = array(
'category__in' => array($first_cat),
'post__not_in' => array($post->ID),
'showposts' => 6,
'caller_get_posts' => 1);
query_posts($args);
if (have_posts()) :
while (have_posts()) : the_post(); update_post_caches($posts); ?>
* ” rel=“bookmark” title=“
?>”>
* 暂无相关文章
篇3:WordPress 非插件实现前台投稿功能
很多网站都想开放读者的投稿功能,接受读者的投稿,不仅可以丰富博客的内容,还可以增加与读者之间的沟通,可以说是一举多得的事情,何乐不为呢?WordPress本身并不提供投稿功能,但是WordPress拥有强大的扩展能力,我们可以自己来添加这个功能,
实 现用户投稿,有两种方法,一种是开放后台的注册功能,普通用户注册进去默认设置为投稿者,登陆进去即可添加文章(默认为草稿);另一种方法是在前台提供投 稿表单,用户填写相应的表格即可。前一种方法实现起来比较简单,基本不需要博主配置太多东西,只是有些博主可能会觉得别扭,不愿让他人看到自己的博客后 台;而后一种方法对投稿者来说方便了很多,博主也不用担心自己博客的后台隐私,只是该方法实现起来比较麻烦,需要配置的东西很多。本文也只将介绍后一种方 法,希望对你有所帮助,当然也只是复制粘贴代码就可以了。
一、添加投稿表单
1、首先在当前主题的目录下新建一个php文件,命名为tougao-page.php,然后将page.php中的所有代码复制到tougao-page.php中;
2、删除tougao-page.php开头的所有注释,即 /* 与 */ ,以及它们之间的所有内容;
3、将
二、添加表单处理代码
在tougao-page.php开头处中,将第一个
get_var(“SELECT post_date FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC LIMIT 1”); // 博客当前最新文章发布时间与要投稿的文章至少间隔120秒。 // 可自行修改时间间隔,修改下面代码中的120即可 // 相比Cookie来验证两次投稿的时间差,读数据库的方式更加安全 if ( current_time('timestamp') - strtotime($last_post) < 120 ) { wp_die('您投稿也太勤快了吧,先歇会儿!'); }// 表单变量初始化 $name = isset( $_POST['tougao_authorname'] ) ? trim(htmlspecialchars($_POST['tougao_authorname'], ENT_QUOTES)) : ''; $email = isset( $_POST['tougao_authoremail'] ) ? trim(htmlspecialchars($_POST['tougao_authoremail'], ENT_QUOTES)) : ''; $blog = isset( $_POST['tougao_authorblog'] ) ? trim(htmlspecialchars($_POST['tougao_authorblog'], ENT_QUOTES)) : ''; $title = isset( $_POST['tougao_title'] ) ? trim(htmlspecialchars($_POST['tougao_title'], ENT_QUOTES)) : ''; $category = isset( $_POST['cat'] ) ? (int)$_POST['cat'] : 0; $content = isset( $_POST['tougao_content'] ) ? trim(htmlspecialchars($_POST['tougao_content'], ENT_QUOTES)) : ''; // 表单项数据验证 if ( empty($name) || mb_strlen($name) > 20 ) { wp_die('昵称必须填写,且长度不得超过20字'); } if ( empty($email) || strlen($email) > 60 || !preg_match(“/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix”, $email)) { wp_die('Email必须填写,且长度不得超过60字,必须符合Email格式'); } if ( empty($title) || mb_strlen($title) > 100 ) { wp_die('标题必须填写,且长度不得超过100字'); } if ( empty($content) || mb_strlen($content) > 3000 || mb_strlen($content) < 100) { wp_die('内容必须填写,且长度不得超过3000字,不得少于100字'); } $post_content = '昵称: '.$name.'
Email: '.$email.'
blog: '.$blog.'
内容:
'.$content;$tougao = array( 'post_title' => $title, 'post_content' => $post_content, 'post_category' => array($category) ); // 将文章插入数据库 $status = wp_insert_post( $tougao );if ($status != 0) { // 投稿成功给博主发送邮件 // somebody#example.com替换博主邮箱 // My subject替换为邮件标题,content替换为邮件内容 wp_mail(“somebody#example.com”,“My subject”,“content”); wp_die('投稿成功!感谢投稿!', '投稿成功'); } else { wp_die('投稿失败!'); }}
最后以UTF-8编码保存tougao-page.php,否则中文可能会乱码,
代码补充说明,如果你想让投稿的文章立即发布,而不需要审核再编辑,那么请将以上代码58行改成:
'post_content' => $post_content, 'post_status' => 'publish',
最后进入WordPress管理后台 – 页面 – 创建页面,标题为投稿(可以自己起名),内容填上投稿说明等,右侧可以选择模板,选择 tougao 即可。
好了,基本的投稿功能已经添加完毕,至于表单样式不好看,表单缺少你想要的项目等问题,你就自己添加css、表单项吧。
篇4:dedecms5.7文章二次开发实现阅读全文功能的方法
这篇文章主要为大家介绍了dedecms5.7文章二次开发实现阅读全文功能的方法,涉及文章模型相关类文件功能的修改与完善,是一个比较典型的二次开发技巧,需要的朋友可以参考下
阅读全文功能其实在很多的流行站点都有的,比如网易,新浪等,随着文章内容的增加,当一个页面有多个分页的时候,就会显示出这个“在本页阅读全文”的链接,点击这个链接之后出现的,将是这篇文章以没有分页出现的型式,那么在dedecms5.7如何在文章内容页添加阅读全文功能呢?
这个阅读全文有什么用呢?说白了,也就是提高用户体验,下面让我们看看,怎么简单现实这个功能.
修改文件:include/arc.archives.class.php
注意:做任何修改前都要备份好原文件.
第一步:打开include/arc.archives.class.php
文件查找://issystem==-1
往下 大概 145行 找到:
代码如下:$this->Fields[‘userip‘] = $this->addTableRow[‘userip‘];
在下面一行添加:
代码如下:$this->Fields[‘body2‘] = $this->addTableRow[‘body‘];
第二步查找:
代码如下:$this->dsql->ExecuteNoneQuery(“Update `dede_archives` SET ismake=1 WHERE id=‘”.$this->ArcID.“‘”);
在上一行添加以下代码:
代码如下://阅读全文开始
if($this->TotalPage > 1) {
//用正则匹配把分页符去掉
$this->Fields[‘body2‘] = preg_replace(‘/# p#副标题# e#/U‘, ‘‘,$this->Fields[‘body2‘]);
$this->SplitFields = explode(“#p2222#”,$this->Fields[‘body2‘]);
$this->Fields[‘tmptitle‘] = (emptyempty($this->Fields[‘tmptitle‘]) ? $this->Fields[‘title‘] : $this->Fields[‘tmptitle‘]);
$this->Fields[‘title‘] = $this->Fields[‘tmptitle‘];
$this->TotalPage = count($this->SplitFields);
$this->Fields[‘totalpage‘] = $this->TotalPage;
$TRUEfilenameall = $this->GetTruePath().$fileFirst.“_all.”.$this->ShortName;
$this->ParseDMFields(1,0);
$this->dtp->SaveTo($TRUEfilenameall);
if($cfg_remote_site==‘Y‘ && $isremote == 1)
{
//分析远程文件路径
$remotefile = str_replace(DEDEROOT, ‘‘, $TRUEfilename);
$localfile = ‘..‘.$remotefile;
//创建远程文件夹
$remotedir = preg_replace(“#[^/]*.html#”, ‘‘, $remotefile);
$this->ftp->rmkdir($remotedir);
$this->ftp->upload($localfile, $remotefile, ‘ascii‘);
}
}
//阅读全文结束
第三步:查找 获得静态页面分页列表,代码如下:
代码如下:/**
* 获得静态页面分页列表
*
* @access public
* @param int $totalPage 总页数
* @param int $nowPage 当前页数
* @param int $aid 文档id
* @return string
*/
function GetPagebreak($totalPage, $nowPage, $aid)
{
if($totalPage==1)
{
return “”;
}
//$PageList = “
共”.$totalPage.“页:
”;
$PageList = “”;
$nPage = $nowPage-1;
$lPage = $nowPage+1;
if($nowPage==1)
{
$PageList.=“<”;
}
else
{
if($nPage==1)
{
$PageList.=“NameFirst.”.“.$this->ShortName.”‘ target=‘_self‘><“;
}
else
{
$PageList.=”NameFirst.“_”.$nPage.“.”.$this->ShortName.“‘ target=‘_self‘><”;
}
}
for($i=1;$i<=$totalPage;$i++)
{
if($i==1)
{
if($nowPage!=1)
{
$PageList.=“NameFirst.”.“.$this->ShortName.”‘ target=‘_self‘>1“;
}
else
{
$PageList.=”1“;
}
}
else
{
$n = $i;
if($nowPage!=$i)
{
$PageList.=”NameFirst.“_”.$i.“.”.$this->ShortName.“‘ target=‘_self‘>”.$n.“”;
}
else
{
$PageList.=“{$n}”;
}
}
}
if($lPage <= $totalPage)
{
$PageList.=“NameFirst.”_“.$lPage.”.“.$this->ShortName.”‘ target=‘_self‘>>“;
}
else
{
$PageList.= ”>“;
}
$PageList.= ”NameFirst.“_all.”.$this->ShortName.“‘>阅读全文”;
return $PageList;
}
也就是在return $PageList 上一行添加了一行代码:
代码如下:$PageList.= “NameFirst.”_all.“.$this->ShortName.”‘>阅读全文“;
修改完成后,保存文件,更新一下页面就可以看到效果了.
希望本文所述对大家的dedecms建站有所帮助,
篇5:Wordpress主题修改:使用文章缩略图功能
今天笔者说的这个缩略图功能,其实网上已经传烂了,不知道大家有没有看过,今儿拿出来原因是,感觉网上说的不是很具体,一些设置没有提到,所以先给大家提前说一下。
首页你要看下你所用的主题有没有开启文章缩略图功能,如果看起的话,会在wordpress后台编辑页面或者文章时在右下角的地方看到一个特色图像的设置,如下图:
如果没有说明你还没有激活这功能。我们需要在你主题functions.php里面加一段代码。
add_theme_support( 'post-thumbnails' ); //激活文章和页面的缩略图功能。
//如果你想分别激活它们,可以使用下面的代码:
add_theme_support( 'post-thumbnails', array( 'post' ) ); // 激活文章缩略图功能
add_theme_support( 'post-thumbnails', array( 'page' ) ); // 激活页面缩略图功能
?>
这样你的缩略图功能就激活了,然后我们添加图片或者直接点击设置特色图片的时候,你会发现多了一个设置如图。
我们单击作为特色图像,这样你就可以将这个图片作为特色图片显示了。
做好之后我们就要对它进行调用然后在前台显示出来,代码是:
the_post_thumbnail;
//需要将这段代码放在你的主循环中比如:
?>
这样缩略图就可以显示了。这个基本的方法掌握好之后,下面是一些它的其他使用方法。
1.自定义缩略图的大小(放在主题functions.php里面add_theme_support()的下面)
//$width 是图片的宽度,可以直接填数字
//$height 是图片的高度,也可以直接填数字
//$crop 是否进行裁剪,默认是false不裁剪,如果填写true 你的图片将会裁剪成你设置的大小。
不过set_post_thumbnail_size()笔者在用的时候不起作用,不知道大家有没有试过。试过后如果可以使用的记得和笔者说下哈。
我这边使用的是直接规定缩略图大小(直接在主循环里面输出)
the_post_thumbnail('thumbnail'); // 缩略图(最大默认 宽150px高150px)
the_post_thumbnail('medium'); // 中等大小(最大默认 宽300px 高300px)
the_post_thumbnail('large'); // 大图 (最后默认宽1024px高1024px)
the_post_thumbnail('full'); // 原图
the_post_thumbnail( array(100,100) ); // 自己定义宽高
?>
这里需要多讲一下,设置默认缩略图大小是在wordpress后台 设置->媒体 里面,
2.判断文章是否含有缩略图
has_post_thumbnail();
//用法是,通过if如果进行判断
if ( has_post_thumbnail() )
{
//显示缩略图
}
else
{
//没有缩略图( 这里可以放一张默认的图片 )
}
?>
3.创建新的缩略图大小(放在主题functions.php文件add_theme_support()下面)
我们看到上面设置的图片大小都是等比例缩小的。不管你怎么设置它都是按比列来进行缩小的。如果想设置宽高不等的。便可以使用下面这个函数。
add_image_size( $name, $width, $height, $crop );
//这里的第一个参数$name是新创建缩略图的名称,其他的参数和上面说的是一样的
//使用方法
add_image_size('home-thumb','200','120');
?>
然后我们在显示的时候只需要在填上新的缩略图名称如:the_post_thumbnail('home-thumb');这样就可以显示了。
4.获取缩略图ID号
以上便是今天主要讲的内容,大家如果以后有需要的可以来看看。
篇6:wordpress无插件实现在线人数统计功能
不用插件实现wordpress的在线人数统计功能,其实很简单,写一个检测在线人数的函数(如下代码段),将函数放到博客主题function.php当中,然后在sidebar或者footer文件中调用即可!
//检测在线人数function counter_user_online($temp){ $user_online = ”count.txt“; //保存人数的文件,网站根目录下 touch($user_online);//如果没有此文件,则创建 $timeout = 120;//120秒内没动作者,认为掉线 $user_arr = file_get_contents($user_online); $user_arr = explode('#',rtrim($user_arr,'#')); $temp = array(); foreach($user_arr as $value){ $user = explode(”,“,trim($value)); if (($user[0] != getenv('REMOTE_ADDR')) && ($user[1] > time())) { //如果不是本用户IP并时间没有 超时则放入到数组中 array_push($temp,$user[0].”,“.$user[1]); } } array_push($temp,getenv('REMOTE_ADDR').”,“.(time() + ($timeout)).'#'); //保存本用户的信息 $user_arr = implode(”#“,$temp); //写入文件 $fp = fopen($user_online,”w“); flock($fp,LOCK_EX); //flock() 不能在NFS以及其他的一些网络文件系统中正常工作 fputs($fp,$user_arr); flock($fp,LOCK_UN); fclose($fp); echo count($temp);}
代码如上,至于如何在页面显示人数的调用方法就不用多说了吧,
wordpress无插件实现在线人数统计功能
,
篇7:WordPress纯代码实现外链自动添加小图标
不知大家有没有注意到笔者博客文章中的外链都有一个小图标(如上图)这个小图标提醒了读者这是个外部链接,提升了用户体验,那么如何给外链自动加上这个小图标呢?(千万别想着手动添加,太耗精力了)
方法一.使用插件WP External Links
WP External Links这个插件不仅可以给外链添加小图标,还可以添加Nofollow、external属性,还可以设置外链在新窗口/标签打开。此外,还可以设置应用范围:文章区域、评论区域、侧边栏。功能非常强大。
方法二.纯代码法(免插件)
如果仅仅是想给外链添加一个小图标的话,何必多安装一个插件呢。
向function.php文件添加以下代码(将www.92app.com换成自己的博客网址):
function autoicon($text) {$return = str_replace('
将左边的小图标上传到空间获取链接,
管理资料
然后向style.css文件添加以下代码:
.external { padding-right: 11px; background: url('图片的链接地址') no-repeat right top;}
最后解释一下代码的作用:
添加到function.php的代码给所有的外部链接加上了一个external类,接着添加到style.css文件中的代码给所有external类的链接添加背景图片,就是那个小图标。这样,就实现了免插件,给外链添加小图标的目的。
来自:www.92app.com/external-links-icon.html
篇8:WordPress自动给文章添加nofollow属性的实现方法
这篇文章主要为大家介绍了WordPress自动给文章添加nofollow属性的实现方法,可通过Nofollow for external link 插件实现文章页自动添加nofollow属性的功能,是非常实用的技巧,需要的朋友可以参考下
nofollow属性是告诉搜索引擎不传权重过去,但WordPressk中如果我们要nofollow属性就需要手工加了,现在我来告诉大家利用 Nofollow for external link就可以自动给文章添加nofollow属性了.
直接安装启用 Nofollow for external link 插件,或者将下面的代码添加到当前主题的 functions.php 文件即可.
实例代码如下:
代码如下:add_filter( ‘the_content‘, ‘cn_nf_url_parse‘);
function cn_nf_url_parse( $content ) {
$regexp = ”]*href=(“??)([^” >]*?)1[^>]*>“;
if(preg_match_all(”/$regexp/siU“, $content, $matches, PREG_SET_ORDER)) {
if( !emptyempty($matches) ) {
$srcUrl = get_option(‘siteurl‘);
for ($i=0; $i < count($matches); $i++)
{
$tag = $matches[$i][0];
$tag2 = $matches[$i][0];
$url = $matches[$i][0];
$noFollow = ‘‘;
$pattern = ‘/targets*=s*”s*_blanks*“/‘;
preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE);
if( count($match) < 1 )
$noFollow .= ‘ target=”_blank“ ‘;
$pattern = ‘/rels*=s*”s*[n|d]ofollows*“/‘;
preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE);
if( count($match) < 1 )
$noFollow .= ‘ rel=”nofollow" ‘;
$pos = strpos($url,$srcUrl);
if ($pos === false) {
$tag = rtrim ($tag,‘>‘);
$tag .= $noFollow.‘>‘;
$content = str_replace($tag2,$tag,$content);
}
}
}
}
$content = str_replace(‘]]>‘, ‘]]>‘, $content);
return $content;
}
最终效果:自动给文章/页面的站外链接添加nofollow属性(rel=”nofollow”),并且在新窗口打开这些链接(即添加 target=”_blank”属性),如果已经手动给链接添加了 rel=”dofollow”,就不会添加 rel=”nofollow”,如果手动添加了 target=”_blank”,就不会重复添加.
为指定分类的所有链接添加nofollow属性,那你可以将下面的代码添加到主题的 functions.php 文件即可:
代码如下:function nofollow_cat_posts($text) {
global $post;
if( in_category(1) ) { // 修改这里的分类ID
$text = stripslashes(wp_rel_nofollow($text));
}
return $text;
}
add_filter(‘the_content‘, ‘nofollow_cat_posts‘);
希望本文所述对大家的WordPress建站有所帮助,
★windows rsync两台服务器目录同步功能实现Windows服务器操作系统
文档为doc格式