Đặt Google lập chỉ mục toàn bộ bài đăng nếu nó được tách thành nhiều trang


8

Mặc dù đây là một câu hỏi, nó cũng là một cảnh báo nghiêm trọng cho các nhà xuất bản tách bài đăng của họ bằng cách sử dụng <!--nextpage-->.

Trần với tôi. Tôi chạy một nền tảng nhiều tác giả bị buôn bán rất cao, xếp hạng rất cao trên các công cụ tìm kiếm. Trong khi thực hiện các cải tiến liên quan đến SEO, tôi nhận thấy rằng chỉ có trang đầu tiên của một bài viết được tách thành nhiều trang đang được Google lập chỉ mục. Làm thế nào tôi nhận thấy điều này?

Bởi vì ai đó đã lấy nội dung của các trang không có nội dung của một bài viết và đăng nó trên trang web của riêng họ. Điều này dẫn đến việc họ xếp hạng cao hơn tôi về từ khóa cụ thể đó. Trên thực tế, hãy để tôi nói lại rằng, bài viết của trang web của tôi thậm chí không được lập chỉ mục ngoài trang đầu tiên.

Câu hỏi của tôi là, làm thế nào tôi có thể làm cho các công cụ tìm kiếm lập chỉ mục toàn bộ bài viết nếu nó được tách thành nhiều trang? Lý tưởng nhất là một tập lệnh hiển thị toàn bộ bài viết nếu khách truy cập là một công cụ tìm kiếm (nếu điều đó sẽ không gây hại cho SEO). Đề nghị khác được chào đón.

Bên cạnh đó, nếu tôi tham gia các kỹ thuật của Mũ Đen, sẽ có một kho vàng nội dung mà tôi có thể khai thác. Hãy suy nghĩ về nó.

Và trên một lưu ý cá nhân, vấn đề này cần được giải quyết trong bản cập nhật tương lai của Wordpress.

Cập nhật : Một câu hỏi tương tự mô tả chi tiết cách Wordpress tạo cùng một URL chuẩn cho tất cả các trang trong chuỗi phân trang đã được hỏi ở đây , tuy nhiên câu trả lời được đăng và đánh dấu là chính xác không trả lời câu hỏi. Giải pháp đó chỉ hoạt động cho các bình luận phân trang, không đăng bài phân trang.

Cập nhật 2 : Theo bài đăng trên blog này của Google, chúng tôi có thể sử dụng rel=”next”rel=”prev”để chỉ ra mối quan hệ giữa các trang. Vì vậy, ví dụ, đây là những gì chúng ta nên đưa <head>vào trang 2 :

<link rel="canonical" href="http://domain.com/article/2" />
<link rel="prev" href="http://domain.com/article/1" />
<link rel="next" href="http://domain.com/article/3" />

Và không nên có một rel = "trước" hoặc "tiếp theo" nếu không có trang sau / trước nó.


Có vẻ như bạn đã tìm thấy câu trả lời. Quan tâm để định dạng nó như vậy và chấp nhận nó? Tôi nghĩ rằng rất nhiều người sẽ được hưởng lợi từ điều này.
Tomas Buteler

@tbuteler Trong khi tôi tìm thấy giải pháp là thêm URL Canonical duy nhất trên mỗi trang được phân trang bao gồm link rel="prev"/"next"bất cứ khi nào cần thiết, tôi không có tập lệnh cho nó được viết. Tuy nhiên, toscho đã đề cập trong cuộc trò chuyện rằng anh ta có thể có một cái gì đó. Theo dõi không gian này để cập nhật ...
Christine Cooper

Tôi đã cập nhật mã trong câu trả lời của mình cho câu hỏi mà bạn đề cập. Tôi đã thử nó, và nó giải quyết vấn đề của bạn. Tốt công việc tìm kiếm về lỗ hổng này!
shea

Câu trả lời:


2

Vấn đề cơ bản cho một giải pháp tập lệnh là: rel_canonicalkhông cung cấp bất kỳ bộ lọc hữu ích nào. Vì vậy, chúng ta phải thay thế chức năng đó:

remove_action( 'wp_head', 'rel_canonical' );
add_action( 'wp_head', 't5_canonical_subpages' );

Vấn đề tiếp theo: $GLOBALS['numpages']trống rỗng trước setup_postdata(). Chúng ta có thể gọi chức năng đó đã ở đây, nhưng nó có thể có tác dụng phụ.

Đây là một giải pháp bổ sung các liên kết trước / tiếp theo chính xác, và nó ngăn chặn các mối quan hệ xung đột gây ra bởi adjacent_posts_rel_link_wp_head. Chúng tôi đã quá móc vào wp_headkhông muộn hơn ưu tiên 9 để hủy kích hoạt hook sau.

remove_action( 'wp_head', 'rel_canonical' );
add_action(    'wp_head', 't5_canonical_subpages', 9 );

/**
 * Extend version of the native function rel_canonical()
 *
 * @wp-hook wp_head
 * @return  void
 */
function t5_canonical_subpages()
{
    if ( ! is_singular() )
        return;

    if ( ! $id = $GLOBALS['wp_the_query']->get_queried_object_id() )
        return;

    $post = get_post( $id );
    setup_postdata( $post );

    # let WordPress do all the work
    if ( empty ( $GLOBALS['page'] ) )
        return rel_canonical();

    $permalink = get_permalink( $id );
    $canonical = t5_page_permalink( $permalink, $GLOBALS['page'] );
    echo "<link rel='canonical' href='$canonical' />";

    # next and prev links
    if ( 1 < $GLOBALS['page'] )
    {
        $prev = t5_page_permalink( $permalink, $GLOBALS['page'] - 1 );
        print "<link rel='prev' href='$prev' />";
    }

    if ( isset ( $GLOBALS['numpages'] ) && $GLOBALS['page'] < $GLOBALS['numpages'] )
    {
        $next = t5_page_permalink( $permalink, $GLOBALS['page'] + 1 );
        print "<link rel='next' href='$next' />";
    }

    # avoid conflicting pev/next links
    remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' );
}

/**
 * Helper to get correct permalinks for sub-pages.
 *
 * @param  string $permalink
 * @param  int    $page
 * @return string
 */
function t5_page_permalink( $permalink, $page )
{
    if ( 1 == $page )
        return $permalink;

    # no pretty permalinks
    if ( '' === get_option( 'permalink_structure' ) )
        return add_query_arg( 'page', $page, $permalink );

    return $permalink . user_trailingslashit( $page, 'single_paged' );
}

Cảm ơn bạn rất nhiều cho kịch bản. Bạn có thời gian để thêm link rel="prev"/rel="next"tính năng như ghi chú trong Update 2câu hỏi của tôi không.
Christine Cooper

Điều đó sẽ yêu cầu setup_postdata()- một cái gì đó sẽ xảy ra nhiều sau này trong quá trình kết xuất trang.
fuxia

Tôi có nên mở một câu hỏi riêng cho nó không, mặc dù cần phải giải quyết 'liên kết liên kết' cho vấn đề lập chỉ mục này?
Christine Cooper

@ChristineCooper Tôi đã thêm nó ngay bây giờ. Không chắc chắn những tác dụng phụ nó có thể gây ra.
fuxia

1
Tôi đã để điều này một thời gian để kiểm tra và xem cách Google lập chỉ mục các bài đăng bây giờ và tôi rất vui khi xác nhận rằng tập lệnh này hoạt động hoàn hảo. Làm tốt!
Christine Cooper

0

Chỉ cần FYI: Plugin WordPress SEO của Yoast đảm nhiệm việc thêm rel = trước và rel = dữ liệu meta tiếp theo vào các <head>trang. Gã đó (Yoast) nghĩ về mọi thứ!


1
-1 Tôi nhận thức được điều này nhưng tôi không sẵn sàng cài đặt một plugin SEO khổng lồ chỉ cho một phần nhỏ các tính năng của nó, trừ khi bạn sẽ sử dụng mọi thứ đi kèm.
Christine Cooper
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.