如何让wordpress文章只被或不被百度等搜索引擎查看?

一、      让wordpress文章不被搜索引擎抓取的方法

方法原理很多,这里不多做赘述,直接上干货:

将下面的代码放在当前主题的functions.php中

  1. // 需要说明的是,如果你的WordPress站点开启了页面缓存,此功能无效
  2. function ccyzkse_add_custom_box() {
  3.   if (function_exists(‘add_meta_box’)) {
  4.     add_meta_box(‘ccyzk_allow_se’, ‘搜索引擎’, ‘ccyzk_allow_se’, ‘post’, ‘side’, ‘low’);
  5.     add_meta_box(‘ccyzk_allow_se’, ‘搜索引擎’, ‘ccyzk_allow_se’, ‘page’, ‘side’, ‘low’);
  6.   }
  7. }
  8. add_action(‘add_meta_boxes’, ‘ccyzkse_add_custom_box’);
  9. function ccyzk_allow_se() {
  10. global $post;
  11. //添加验证字段
  12. wp_nonce_field(‘ccyzk_allow_se’, ‘ccyzk_allow_se_nonce’);
  13. $meta_value = get_post_meta($post->ID, ‘ccyzk_allow_se’, true);
  14. if($meta_value)
  15.   echo ‘<input name=”ccyzk-allow-se” type=”checkbox” checked=”checked” value=”1″ /> 屏蔽搜索引擎’;
  16. else
  17.   echo ‘<input name=”ccyzk-allow-se” type=”checkbox” value=”1″ /> 屏蔽搜索引擎’;
  18. }
  19. // 保存选项设置
  20. function ccyzkse_save_postdata($post_id) {
  21. // 验证
  22. if ( !isset( $_POST[‘ccyzk_allow_se_nonce’]))
  23.   return $post_id;
  24. $nonce = $_POST[‘ccyzk_allow_se_nonce’];
  25. // 验证字段是否合法
  26. if (!wp_verify_nonce( $nonce, ‘ccyzk_allow_se’))
  27.   return $post_id;
  28. // 判断是否自动保存
  29. if (defined(‘DOING_AUTOSAVE’) && DOING_AUTOSAVE)
  30.     return $post_id;
  31. // 验证用户权限
  32. if (‘page’ == $_POST[‘post_type’]) {
  33.   if ( !current_user_can(‘edit_page’, $post_id))
  34.     return $post_id;
  35. }
  36. else {
  37.   if (!current_user_can(‘edit_post’, $post_id))
  38.     return $post_id;
  39. }
  40. // 更新设置
  41. if(!empty($_POST[‘ccyzk-allow-se’]))
  42.   update_post_meta($post_id, ‘ccyzk_allow_se’, ‘1’);
  43. else
  44.   update_post_meta($post_id, ‘ccyzk_allow_se’, ‘0’);
  45. }
  46. add_action(‘save_post’, ‘ccyzkse_save_postdata’);
  47. // 对于设置不允许抓取文章和页面
  48. // 禁止搜索引擎抓取,返回404
  49. function do_ccyzk_allow_se() {
  50. // 本功能只对文章和页面有效
  51. if(is_singular()) {
  52.   global $post;
  53.   $is_robots = 0;
  54.   $ccyzk_allow_se = get_post_meta($post->ID, ‘ccyzk_allow_se’, true);
  55. add_action(“wp_head”, function(){echo “<meta name=\”robots\” content=\”noindex,noarchive\” />\n”;}, 10);
  56. }
  57. add_action(‘wp’, ‘do_ccyzk_allow_se’);

 

以上方法需要主题文件的header.php中含有wp_head();

 

二、      让wordpress文章只被搜索引擎查看

上面介绍了一些文章不想被搜索引擎收录的方法,那么有没有只被搜索引擎收录,但点击查看不了的方法呢?有是有,不过个人认为很鸡肋,因为搜索收录了,却看不了,那还要其收录干嘛,别跟我说,SEO的目的就是让搜索引擎收录后,有更多的用户能查看到这篇文章。不过还是上干货,给有需要的朋友吧

依然是在当前主题的functions.php中添加

  1. // 文章/页面编辑页面添加选项
  2. function ccyzkseo_add_custom_box() {
  3.   add_meta_box(‘ccyzk_se_only’, ‘搜索引擎专属’, ‘ccyzk_se_only’, ‘post’, ‘side’, ‘low’);
  4.   add_meta_box(‘ccyzk_se_only’, ‘搜索引擎专属’, ‘ccyzk_se_only’, ‘page’, ‘side’, ‘low’);
  5. }
  6. add_action(‘add_meta_boxes’, ‘ccyzkseo_add_custom_box’);
  7. function ccyzk_se_only() {
  8.   global $post;
  9. //添加验证字段
  10. wp_nonce_field(‘ccyzk_se_only’, ‘ccyzk_se_only_nonce’);
  11. $meta_value = get_post_meta($post->ID, ‘ccyzk_se_only’, true);
  12. if($meta_value)
  13.   echo ‘<input name=”ccyzk-se-only” type=”checkbox” checked=”checked” value=”1″ /> 只允许搜索引擎查看’;
  14. else
  15.   echo ‘<input name=”ccyzk-se-only” type=”checkbox” value=”1″ /> 只允许搜索引擎查看’;
  16. }
  17. // 保存选项设置
  18. function ccyzkseo_save_postdata($post_id) {
  19. // 验证
  20. if ( !isset( $_POST[‘ccyzk_se_only_nonce’]))
  21.   return $post_id;
  22. $nonce = $_POST[‘ccyzk_se_only_nonce’];
  23. // 验证字段是否合法
  24. if (!wp_verify_nonce( $nonce, ‘ccyzk_se_only’))
  25.   return $post_id;
  26. // 判断是否自动保存
  27. if (defined(‘DOING_AUTOSAVE’) && DOING_AUTOSAVE)
  28.     return $post_id;
  29. // 验证用户权限
  30. if (‘page’ == $_POST[‘post_type’]) {
  31.   if ( !current_user_can(‘edit_page’, $post_id))
  32.     return $post_id;
  33. }
  34. else {
  35.   if (!current_user_can(‘edit_post’, $post_id))
  36.     return $post_id;
  37. }
  38. // 更新设置
  39. if(!empty($_POST[‘ccyzk-se-only’]))
  40.   update_post_meta($post_id, ‘ccyzk_se_only’, ‘1’);
  41. else
  42.   delete_post_meta($post_id, ‘ccyzk_se_only’);
  43. }
  44. add_action(‘save_post’, ‘ccyzkseo_save_postdata’);
  45. function do_ccyzk_se_only() {
  46. // 本功能只对文章和页面有效
  47. if(is_singular()) {
  48.   global $post;
  49.   $is_robots = 0;
  50.   $ccyzk_se_only = get_post_meta($post->ID, ‘ccyzk_se_only’, true);
  51.   if(!empty($ccyzk_se_only)) {
  52.     // 下面是搜索引擎Agent判断关键字数组
  53.     // 有点简单,自己优化一下吧
  54.     $bots = array(
  55.           ‘spider’,
  56.           ‘bot’,
  57.           ‘crawl’,
  58.           ‘Slurp’,
  59.           ‘yahoo-blogs’,
  60.           ‘Yandex’,
  61.           ‘Yeti’,
  62.           ‘blogsearch’,
  63.           ‘ia_archive’,
  64.           ‘Google’
  65.           );
  66.     $useragent = $_SERVER[‘HTTP_USER_AGENT’];
  67.     if(!empty($useragent)) {
  68.       foreach ($bots as $lookfor) {
  69.         if (stristr($useragent, $lookfor) !== false) {
  70.           $is_robots = 1;
  71.           break;
  72.         }
  73.       }
  74.     }
  75.     // 如果不是搜索引擎,显示错误信息
  76.     // 已登录的用户不受影响
  77.     if(!$is_robots && !is_user_logged_in()) {
  78.       wp_die(‘您无权查看此文!’);
  79.     }
  80.   }
  81. }
  82. }
  83. add_action(‘wp’, ‘do_ccyzk_se_only’);

 

其实还有个方法,后台文章有公开度设置,只需设置对应的公开度,就能达到以上的一些效果

原创文章,转载时必须以链接形式注明本文来自云中客,本文固定链接:http://vr.ccyzk.com/357.htm

相关文章