Trong quá trình sử dụng WordPress để hiển thị tác giả cho bài viết bạn phải thực hiện việc Rich Snippets site của bằng bằng công cụ Google Structured Data Testing Tool. Tuy nhiên có một số site WordPress sử dụng theme bị lỗi phần Rich Snippets tác giả do cấu trúc của mỗi theme khác nhau. Sau khi kiểm tra bằng công cụ Google Structured Data Testing Tool thì sẽ có một số lỗi như sau:
- Error: At least one field must be set for HatomEntry
- Error: Missing required field “entry-title”.
- Error: Missing required field “updated”.
- Error: Missing required hCard “author”.
- Error: At least one field must be set for Hcard.
- Error: Missing required field “name (fn)”.
Tôi không phải là dân lập trình nên cũng rất điên đầu về vấn đề này. Sau một ngày tham khảo các cách sửa các lỗi trên các Blog và Diễn đàn chuyên về WordPress với rất nhiều phương pháp khác nhau, tôi đã tìm ra được hai cách sửa lỗi theo tôi nghĩ tốt nhất hiện nay.

I. Sửa lỗi bằng cách chỉnh sửa file single.php
1/ Sửa lỗi : Missing required field “entry-title”
Các theme thông thường sẽ có đoạn code sau :
<h1 class="title single-title"><?php the_title(); ?></h1> |
Hãy thay nó với code bên dưới đây
<h1 class="title single-title entry-title"><?php the_title(); ?></h1> |
2/ Sửa lỗi : Fix Missing required field “updated”
Tìm đoạn code sau :
<span class="post_date"><?php the_time('j F,Y'); ?></span> |
Thêm vào thuộc tính “date updated” , khi đó code có dạng như sau :
<span class="post_date date updated"><?php the_time('j F,Y'); ?></span> |
3/ Sửa lỗi : Missing required hCard “author” và Missing required field “name (fn)”
Bước này sẽ sửa cả 2 lỗi. Tìm đoạn :
<span class="theauthor"><?php the_author_posts_link(); ?></span> |
hoặc
<span class="theauthor"><?php the_author(); ?></span> |
Sửa lại thành
<span class="vcard author"><span class="fn"><?php the_author_posts_link(); ?></span></span> |
hoặc
<span class="vcard author"> <span class="fn"><?php the_author(); ?></span></span> |
II. Sửa lỗi bằng cách thêm code vào file fuctions.php
Bạn chỉ cần vào editor và mở file fuctions.php của themes ra và post đoạn code sau vào bên dưới cùng :
| //Thêm class entry-content bao quanh phần nội dung function hatom_mod_post_content ($content) { if ( in_the_loop() && !is_page() ) { $content = ‘<span class=”entry-content”>’.$content.'</span>’; } return $content; } add_filter( ‘the_content’, ‘hatom_mod_post_content’);//thêm class author và updated và phần nội dung function add_mod_hatom_data($content) { $t = get_the_modified_time(‘F jS, Y’); $author = get_the_author(); $title = get_the_title(); if(is_single()) { $content .= ‘<div class=”hatom-extra”><span class=”entry-title”>’.$title.'</span> vào lúc: <span class=”updated”> ‘.$t.'</span> bởi <span class=”author vcard”><span class=”fn”>’.$author.'</span></span></div>’; } return $content; } add_filter(‘the_content’, ‘add_mod_hatom_data’); |
Sau khi đã paste đoạn code trên vào file fuctions.php bạn save lại, tuy nhiên trong phần bài viết sẽ hiển thị các thông tin về author, date update, title vào phía dướ, trong rất xấu, do đó bạn tiếp tục vào custom css trong theme của bạn để add đoạn css sau nhằm ẩn đi những thông tin trên
| /* trang trí cho đẹp*/
.hatom-extra {font-size:10px; font-weight:400; font-style:italic;} /* Ẩn luôn cho đẹp trời */ .hatom-extra {display: none;} |
Sau khi hoàn thành bạn có thể vào lại Google Structured Data Testing Tool để test và hưởng thụ thành quả. Trong hai cách nói trên , tôi đã áp dụng cho site của mình với cách thứ 2 bởi vì nó đơn giản và không rắc rối như cách 1. Chúc bạn thành công.
Google hiện tại đã bỏ quyền tác giả, thêm vào phần rich-snippets đánh giá này cũng rất hay, cám ơn bạn đã chia sẻ bài viết hay, xin cám ơn !
hay lắm!
Website của mình không dùng author và date trong file single.php nhưng trong webmaster vẫn báo missing. Vậy khắc phục nó thế nào vậy bạn
Thank bạn
Thực ra site mình chỉ là root domain nhưng dựa trên nền tảng WordPress thì sửa có ảnh hưởng gì không bạn? Mình cũng đang định sửa nhưng vì lý do mình không am hiểu về code nhiều nên chưa dám sửa. Sợ sửa xong là die luôn. (Đã từng cho die mấy site). Chính vì thế nên mình muốn hỏi rõ hơn 1 chút.