Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'hybrid_attr_head' not found or invalid function name in /home/bahiensg/domains/bahien.com/public_html/wp-includes/class-wp-hook.php on line 289
class="head"> Tạo sitemap cho WordPress không sử dụng plugin – Đinh Bá Hiển

Tạo sitemap cho Wordpress không sử dụng plugin

Chắc hẳn các bạn cũng đã biết Sitemap quan trọng thế nào trong website. Toàn bộ công việc của Sitemap là hướng dẫn cho các bộ máy tìm kiếm thu thập thông tin của trang web một cách hiệu quả đồng thời cập nhật những thay đổi trên trang web của bạn, như là thêm một trang mới hay thay đổi website hiện tại.

Nếu bạn sử dụng WordPress, bạn có thể dễ dàng tạo sitemap cho website của bạn bằng rất nhiều các plugin khác nhau. Nhưng trong bài viết này tôi sẽ hướng dẫn các bạn cách tạo sitemap cho một trang Wordpres mà không cần phải dùng tới plugin nào cả.

Bước 1: Mở file functions.php của giao diện bạn đang sử dụng

Ở bước này các bạn có thể sử dụng Theme Editor trong giao diện admin của wordpress hoặc chỉnh sửa file trên panel của hosting đều được.

Có lưu ý quan trọng là tôi khuyến khích các bạn sử dụng child-theme để không phải chỉnh sửa file functions sau mỗi lần cập nhật theme – Bạn nào chưa biết child-theme là gì thì google thêm nhé =)

Bước 2: Copy đoạn code dưới đây và dán vào file functions.php ở bước 1

/****************************************************
* XML Sitemap in WordPress
*****************************************************/
function xml_sitemap() {
  $postsForSitemap = get_posts(array(
    'numberposts' => -1,
    'orderby' => 'modified',
    'post_type'  => array('post','page'),
    'order'    => 'DESC'
  ));
  $sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
  $sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
  foreach($postsForSitemap as $post) {
    setup_postdata($post);
    $postdate = explode(" ", $post->post_modified);
    $sitemap .= '<url>'.
      '<loc>'. get_permalink($post->ID) .'</loc>'.
      '<lastmod>'. $postdate[0] .'</lastmod>'.
      '<changefreq>monthly</changefreq>'.
    '</url>';
  }
  $sitemap .= '</urlset>';
  $fp = fopen(ABSPATH . "sitemap.xml", 'w');
  fwrite($fp, $sitemap);
  fclose($fp);
}
add_action("publish_post", "xml_sitemap");
add_action("publish_page", "xml_sitemap");

Trong đoạn code trên bạn sẽ thấy mình sử dụng 2 hook add_action() với 2 tham số truyền vào. Nó sẽ liên kết với hành động của bạn.
Cụ thể là khi bạn đăng một bài viết mới hoặc tạo 1 trang mới thì wordpress sẽ gọi đến hàm xml_sitemap. Hàm này sẽ lấy những dữ liệu cần thiết và cập nhật vào file sitemap.xml

Tiếp theo bạn cần lưu lại file functions.php sau khi đã thêm đoạn code trên của mình vào.
Cuối cùng bạn cần tạo 1 trang mới hoặc đăng 1 bài viết mới và tận hưởng thành quả.

Link sitemap của bạn sẽ là: domain.com/sitemap.xml
Trong đó thay thế domain.com bằng tên domain của bạn

Vậy là xong rồi đó. bạn có thể lấy link sitemap này để sử dụng cho google webmaster tool hoặc các search engine khác được rồi.

Chúc bạn thành công

 

5 Comments on "Tạo sitemap cho WordPress không sử dụng plugin"


  1. Mình muốn lấy những cái khác vào file site map của mình được không bạn? Ví dụ như sản phẩm (web mình là web bán hàng woo), url hình ảnh…

    Reply

    1. Được luôn bạn nhé
      Chỉnh code dòng này lại ‘post_type’ => array(‘post’,’page’),
      thêm post_type product của woo và attachment dành cho hình ảnh

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *