做为草根博客站长,原创是个永远不能绕过的话题!很多的站长都碰到过自己辛辛苦苦的原创文章被人剽窃、篡改、转载的尴尬经历。其实呢,在互联网上这种事儿几乎是司空见惯了,已经是见怪不怪的事儿了。只要做好了自己博客的品牌词建设,影响几乎是可以忽略不计的。目前来看保护原创还只是一个口号而已,对于草根博客来说能有的措施很少,百度星火计划2.0应该算是目前选择不多的选择了。
今天明月就借【张戈博客】里的文章【WordPress针对百度星火计划2.0原创保护的优化措施】这个花献给大家,就算是一个参考吧,不敢保证一定可以维护你原创的利益,仅仅是提供一个方法而已。
其实原理很简单,就是按照百度官方的要求对我们的原创文章加上原创识别<meta>来让百度可以锁定“原创”文章的出处、链接和作者。也就是说是针对百度搜索引擎的,如果你的原创文章被百度识别到了,那么就可以在“星火计划2.0_百度站长平台”里看到原创收录保护的情况。(说实话,明月也是才开始使用这个代码的,所以具体效果是什么样?我也不知道)
将下面的代码加到主题的function.php里即可,都是自动的,我们只需要在发布文章是记得根据原创与否加上自定义栏目author(值可以随便填写)就可以了。
注:下面代码开始第11行的'author'是个WP文章的自定义栏目是用来进行是否原创的参数使用的,也就是说如果文章有author这个自定义栏目即表明此文不是原创文章,反之则是原创文章加入百度原创标记。
/**
* WordPress 星火计划原创保护专用META优化代码(最终版) By 张戈博客
* 文章地址:https://zhangge.net/5084.html
*/
add_action('wp_head', 'starfire',0);
if(!function_exists('starfire')){
function starfire(){
//新增判断,如果是原创文章才加入星火计划META申明
global $wpdb;
$post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
/*下面的'author'是个WP文章的自定义栏目是用来进行是否原创的参数使用的,也就是说如果文章有author这个自定义栏目即表明此文不是原创文章,反之则是原创文章加入百度原创<meta>标记*/
$copy = get_post_meta($post_id , 'author', true);
if (is_singular() && emptyempty($copy)) {
date_default_timezone_set('PRC');
echo '<meta property="og:type" content="article"/>
<meta property="article:published_time" content="'.get_the_date('c').'"/>
<meta property="og:release_date" content="'.get_the_date('c').'"/>
<meta property="article:author" content="';bloginfo('name'); echo '" />';
echo '<meta property="og:author" content="';bloginfo('name');echo '" />';
echo '<meta property="og:url" content="';the_permalink(); echo '"/>';
//输出文章标题+分隔符+网站名称,不喜欢这种形式的请自行改造(如果不需要这个标签,请删除以下三行)。
echo '<meta property="og:title" content="'.trim(wp_title('',0)).' | '; bloginfo('name'); echo '" />';
//输出博客名称,如果想改成其他内容,比如作者请自行修改 bloginfo('name')
echo '<meta property="article:published_first" content="';bloginfo('name');echo ',';
the_permalink();
//默认截取文章220个字作为摘要,可以自行修改下行220为其他整数
echo '" /><meta property="og:description" content="'.get_mypost_excerpt($post_id, 220).'……" />
<meta property="og:image" content="'.get_mypost_thumbnail($post_id).'" />
<meta itemprop="image" content="' . get_mypost_thumbnail($post_id) . '" />';
}
}
}
/**
* WordPress 获取文章摘要整理版 By 张戈博客
*/
function get_mypost_excerpt($post_ID,$len){
if (!function_exists('utf8Substr')) {
function utf8Substr($str, $from, $len) {
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}
}
if(!$post_content){
$post = get_post($post_ID);
$post_content = $post->post_content;
}
if ($post->post_excerpt) {
$description = $post->post_excerpt;
} else {
if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$result)){
$post_content = $result['1'];
} else {
$post_content_r = explode("\n",trim(strip_tags($post->post_content)));
$post_content = $post_content_r['0'];
}
$description = utf8Substr($post_content,0,$len);
return $description;
}
}
/**
* WordPress 获取文章图片加强版 By 张戈博客
*/
function get_mypost_thumbnail($post_ID){
if (has_post_thumbnail()) {
$timthumb_src = wp_get_attachment_image_src( get_post_thumbnail_id($post_ID), 'full' );
$url = $timthumb_src[0];
} else {
if(!$post_content){
$post = get_post($post_ID);
$post_content = $post->post_content;
}
preg_match_all('|<img.*?src=[\'"](.*?)[\'"].*?>|i', do_shortcode($post_content), $matches);
if( $matches && isset($matches[1]) && isset($matches[1][0]) ){
$url = $matches[1][0];
}else{
$url = '';
}
}
return $url;
}
至此,我们就完成了我们博客原创文章的保护了,只要原创文章被百度识别保护,就不用担心被剽窃了。
另外有人反映代码:
$copy = get_post_meta($post_id , 'author', true);
if (is_singular() && emptyempty($copy))
返回值有时会是无效的或者没有返回值,明月以前也碰到过,现在换了主题后反而正常了,很怪异。不过,【张戈博客】给出了修正的代码如下:
将以下代码加入functions.php里。
function get_meta_key(){
global $wpdb;
$post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
$copy = get_post_meta($post_id , 'author', true);
return $copy;
}
然后将下面的代码:
$copy = get_post_meta($post->ID, 'author', true);
改成:
$copy = get_meta_key();
这样一来就可以正常的判断了。
明月的博客于前天晚上已经启用这段代码了,至于说效果我只能是拭目以待了,剩下的就是多多的原创内容了,让我们静静的等待吧!
源代码来自【张戈博客】