Jadikan Google mengindeks seluruh pos jika dipisahkan menjadi beberapa halaman


8

Meskipun ini adalah pertanyaan, ini juga merupakan peringatan serius bagi penerbit yang memisahkan penggunaan posting mereka <!--nextpage-->.

Telanjang dengan saya. Saya menjalankan platform beberapa penulis yang sangat diperdagangkan yang berperingkat sangat tinggi di mesin pencari. Saat membuat peningkatan terkait SEO, saya perhatikan bahwa hanya halaman pertama dari sebuah artikel yang dipisahkan menjadi beberapa halaman yang diindeks oleh Google. Bagaimana saya melihat ini?

Karena seseorang mengambil konten dari halaman artikel yang belum diindeks dan mempostingnya di situs mereka sendiri. Ini menghasilkan peringkat mereka lebih tinggi dari saya pada kata kunci tertentu. Sebenarnya, saya ulangi lagi, artikel situs saya bahkan tidak diindeks di luar halaman pertama.

Pertanyaan saya adalah, bagaimana saya bisa membuat mesin pencari mengindeks seluruh artikel jika dipisahkan menjadi beberapa halaman? Idealnya, skrip yang menampilkan artikel lengkap jika pengunjung adalah mesin pencari (jika itu tidak berbahaya bagi SEO). Saran lain dipersilakan.

Sebagai tambahan, jika saya tertarik dengan teknik Black Hat, akan ada tambang emas konten di luar sana yang bisa saya manfaatkan. Pikirkan tentang itu.

Dan pada catatan pribadi, masalah ini harus diatasi dalam pembaruan Wordpress di masa depan.

Pembaruan : Pertanyaan serupa yang merinci bagaimana Wordpress membuat URL kanonik yang sama untuk semua halaman dalam urutan paginated ditanyakan di sini , namun jawaban yang diposting dan ditandai sebagai benar tidak menjawab pertanyaan. Solusi itu hanya berfungsi untuk komentar halaman, bukan posting dengan paginasi.

Pembaruan 2 : Menurut posting blog ini oleh Google, kami dapat menggunakan rel=”next”dan rel=”prev”untuk menunjukkan hubungan antar halaman. Jadi misalnya, ini adalah apa yang harus kita sertakan dalam <head>pada halaman 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" />

Dan seharusnya tidak ada rel = "prev" atau "next" jika tidak ada halaman setelah / sebelum itu.


Sepertinya Anda sudah menemukan jawabannya. Ingin memformatnya dan menerimanya? Saya pikir banyak orang akan mendapat manfaat dari ini.
Tomas Buteler

@tbuteler Sementara saya menemukan solusi untuk menambahkan URL Canonical unik pada setiap halaman halaman dan untuk memasukkan link rel="prev"/"next"kapan pun diperlukan, saya tidak memiliki skrip untuk itu ditulis. Namun, toscho disebutkan dalam obrolan bahwa ia mungkin memiliki sesuatu. Tonton ruang ini untuk pembaruan ...
Christine Cooper

Saya telah memperbarui kode dalam jawaban saya untuk pertanyaan yang Anda ajukan. Saya telah mengujinya, dan itu memecahkan masalah Anda. Kerja bagus menemukan kelemahan ini!
shea

Jawaban:


2

Masalah dasar untuk solusi skrip adalah: rel_canonicaltidak menawarkan filter yang berguna. Jadi kita harus mengganti fungsi itu:

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

Masalah selanjutnya: $GLOBALS['numpages']kosong sebelumnya setup_postdata(). Kita dapat memanggil fungsi itu sudah ada di sini, tetapi mungkin memiliki efek samping.

Berikut adalah solusi yang menambahkan tautan prev / next yang tepat juga, dan mencegah hubungan yang saling bertentangan yang disebabkan oleh adjacent_posts_rel_link_wp_head. Kami memiliki terlalu banyak kait ke dalam wp_headselambat-lambatnya dari prioritas 9 untuk menonaktifkan kait yang terakhir.

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' );
}

Terima kasih banyak untuk skripnya. Apakah Anda punya waktu untuk menambahkan link rel="prev"/rel="next"fitur seperti yang disebutkan dalam Update 2pertanyaan saya.
Christine Cooper

Itu akan membutuhkan setup_postdata()- sesuatu yang harus terjadi jauh kemudian selama rendering halaman.
fuxia

Haruskah saya membuka pertanyaan terpisah untuk itu meskipun 'tautan rel' diperlukan agar masalah pengindeksan ini dapat diselesaikan?
Christine Cooper

@ ChristineCooper Saya telah menambahkan itu sekarang. Tidak yakin apa efek samping yang ditimbulkannya.
fuxia

1
Saya meninggalkan beberapa saat untuk menguji dan melihat bagaimana Google mengindeks posting sekarang dan saya senang untuk mengkonfirmasi bahwa skrip ini berfungsi dengan baik. Sudah selesai dilakukan dengan baik!
Christine Cooper

0

Hanya FYI: Plugin SEO WordPress Yoast menangani penambahan rel = prev dan rel = data meta berikutnya ke <head>halaman. Orang itu (Yoast) memikirkan segalanya!


1
-1 Saya menyadari hal ini tetapi saya tidak mau menginstal plugin SEO besar hanya untuk satu bagian kecil dari fitur-fiturnya, Anda juga tidak akan kecuali Anda akan menggunakan semua yang datang dengannya.
Christine Cooper
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.