Rendi Google indicizza l'intero post se è separato in più pagine


8

Sebbene questa sia una domanda, è anche un serio avvertimento per gli editori che separano i loro post utilizzando <!--nextpage-->.

Nudo con me. Gestisco una piattaforma di autori multipli trafficata che si posiziona molto in alto nei motori di ricerca. Mentre apporta miglioramenti alla SEO, ho notato che solo la prima pagina di un articolo che è separata in più pagine viene indicizzata da Google. Come ho notato questo?

Perché qualcuno ha afferrato il contenuto delle pagine non indicizzate di un articolo e lo ha pubblicato sul proprio sito. Ciò li ha portati a posizionarsi più in alto di me per quella particolare parola chiave. In realtà, consentitemi di riformularlo, l'articolo del mio sito non è nemmeno indicizzato oltre la prima pagina.

La mia domanda è: come posso fare in modo che i motori di ricerca indicizzino l'intero articolo se è separato in più pagine? Idealmente, uno script che mostra l'articolo completo se il visitatore è un motore di ricerca (se ciò non sarebbe dannoso per il SEO). Altri suggerimenti sono ben accetti.

In una nota a margine, se mi piacessero le tecniche di Black Hat, ci sarebbe una miniera d'oro di contenuti là fuori che potrei sfruttare. Pensaci .

E su una nota personale, questo problema dovrebbe essere affrontato in un futuro aggiornamento di Wordpress.

Aggiornamento : Una domanda simile che dettagliato come Wordpress crea lo stesso URL canonico per tutte le pagine in una sequenza impaginato è stato chiesto qui , tuttavia la risposta che è stato inviato e contrassegnato come corretto non rispondere alla domanda. Quella soluzione funziona solo per i commenti paginati, non i messaggi paginati.

Aggiornamento 2 : Secondo questo post di blog di Google, possiamo usare rel=”next”e rel=”prev”indicare la relazione tra le pagine. Così, per esempio, questo è ciò che dovremmo includere in <head>sulla pagina 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" />

E non dovrebbe esserci un rel = "prev" o "next" se non c'è una pagina dopo / prima di essa.


Sembra che tu abbia trovato la risposta. Vuoi formattarlo come tale e accettarlo? Penso che molte persone ne trarranno beneficio.
Tomas Buteler,

@tbuteler Mentre ho trovato la soluzione che è quella di aggiungere un URL canonico univoco su ogni pagina impaginata e di includere link rel="prev"/"next"ogni volta che è necessario, non ho uno script per esso scritto. Tuttavia, toscho ha menzionato nella chat che potrebbe avere qualcosa. Guarda questo spazio per gli aggiornamenti ...
Christine Cooper

Ho aggiornato il codice nella mia risposta sulla domanda a cui hai fatto riferimento. L'ho provato e risolve il tuo problema. Ottimo lavoro per scoprire questo difetto!
karité

Risposte:


2

Il problema di base per una soluzione di script è: rel_canonicalnon offre alcun filtro utile. Quindi dobbiamo sostituire quella funzione:

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

Il prossimo problema: $GLOBALS['numpages']prima è vuoto setup_postdata(). Potremmo chiamare quella funzione già qui, ma potrebbe avere effetti collaterali.

Ecco una soluzione che aggiunge anche i collegamenti precedenti / successivi corretti e impedisce relazioni contrastanti causate da adjacent_posts_rel_link_wp_head. wp_headEntro la priorità 9 abbiamo troppo aggancio per disattivare quest'ultimo hook.

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

Grazie mille per la sceneggiatura. Hai il tempo di aggiungere la link rel="prev"/rel="next"funzionalità come indicato nella Update 2mia domanda.
Christine Cooper

Ciò richiederebbe un setup_postdata()- qualcosa che dovrebbe accadere molto più tardi durante il rendering della pagina.
fuxia

Devo aprire una domanda separata anche se è necessario il "link rel" per risolvere questo problema di indicizzazione?
Christine Cooper

@ChristineCooper L'ho aggiunto ora. Non sono sicuro di quali effetti collaterali potrebbe causare.
fuxia

1
L'ho lasciato un po 'per testare e vedere come Google indicizza i post ora e sono felice di confermare che questo script funziona perfettamente. Molto bene!
Christine Cooper

0

Cordiali saluti: il plug-in SEO per WordPress di Yoast si occupa dell'aggiunta dei metadati rel = prev e rel = next alle <head>pagine. Quel ragazzo (Yoast) pensa a tutto!


1
-1 Ne sono consapevole ma non sono disposto a installare un enorme plug-in SEO solo per una parte minore delle sue funzionalità, né dovresti farlo a meno che non utilizzerai tutto ciò che viene fornito.
Christine Cooper
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.