防止wordpress网站内容被搜索爬虫抓取,可以用AJAX来处理

如网站部分内容只想让浏览者看到,而不想被搜索爬虫抓取,可通过Ajax动态加载页面内容,而不是直接在HTML中显示,页面源代码中也看不到隐藏的内容,搜索爬虫正常情况下不会识别Ajax加载的内容,自然也无法获取到,下面就说一下具体方法。

添加JS文件

在主题目录js目录添加一个名称为my-script的JS文件。

  1. /js/my-script.js

在其中添加:

  1. jQuery(document).ready(function($) {
  2. var data = {
  3. 'action': 'zm_action',
  4. 'data': 'zm_data'
  5. };
  6. $.post(zm_script.ajax_url, data, function(response) {
  7. $('.zm-content').html(response);
  8. });
  9. });

加载JS文件

将下面代码添加到主题函数模板functions.php文件中

  1. // 加载JS文件
  2. function load_zm_script() {
  3. wp_enqueue_script( 'my-script', get_template_directory_uri() . '/js/my-script.js', array('jquery'), '1.0', true );
  4. wp_localize_script( 'my-script', 'zm_script', array(
  5. 'ajax_url' => admin_url( 'admin-ajax.php' )
  6. ));
  7. }
  8. add_action( 'wp_enqueue_scripts', 'load_zm_script' );

添加Ajax动作函数

将下面代码添加到主题函数模板functions.php文件中

  1. // 添加ajax动作
  2. add_action('wp_ajax_zm_action', 'zm_action_callback');
  3. add_action('wp_ajax_nopriv_zm_action', 'zm_action_callback');
  4.  
  5. function zm_action_callback() {
  6. echo '不想被搜索爬虫抓取的内容';
  7. wp_die();
  8. }

修改其中的文字。

前端调用

最后,在准备显示内容的位置添加

  1. <div class="zm-content"></div>

因文字内容是通过Ajax加载的,搜索爬虫抓取不到,只有正常打开网页才会看到。

上面的Ajax动作函数只是加载了一段文字,也可以调用WordPress文章,比如,随机调用5篇文章:

  1. // 添加随机调用5篇文章Ajax动作
  2. function zm_action_callback() {
  3. echo '<ul>';
  4.  
  5. $args = array(
  6. 'orderby' => 'rand',
  7. 'posts_per_page' => 5
  8. );
  9.  
  10. $query = new WP_Query( $args );
  11. while ( $query->have_posts() ) : $query->the_post();
  12. echo '<li>';
  13. echo '<a href="';
  14. echo the_permalink();
  15. echo '">';
  16. echo the_title();
  17. echo '</a>';
  18. echo '</li>';
  19. endwhile;
  20. wp_reset_postdata();
  21. echo '</ul>';
  22. wp_die();
  23. }

上述随机文章调用并不会被静态缓存,保持每次刷新随机显示文章。

THE END