Lassen Sie Google den gesamten Beitrag indizieren, wenn er in mehrere Seiten unterteilt ist

8

Dies ist zwar eine Frage, aber auch eine ernsthafte Warnung für Publisher, die ihre Beiträge mithilfe von trennen <!--nextpage-->.

Bloß mit mir. Ich betreibe eine stark frequentierte Plattform mit mehreren Autoren, die in Suchmaschinen einen sehr hohen Rang einnimmt. Bei Verbesserungen im Zusammenhang mit SEO habe ich festgestellt, dass nur die erste Seite eines Artikels, die in mehrere Seiten unterteilt ist, von Google indiziert wird. Wie habe ich das bemerkt?

Weil jemand den Inhalt der nicht indizierten Seiten eines Artikels gepackt und auf seiner eigenen Website veröffentlicht hat. Dies führte dazu, dass sie bei diesem bestimmten Keyword einen höheren Rang als ich hatten. Lassen Sie mich das umformulieren. Der Artikel meiner Website wird nicht einmal über die erste Seite hinaus indiziert.

Meine Frage ist, wie kann ich die Suchmaschinen dazu bringen, den gesamten Artikel zu indizieren, wenn er in mehrere Seiten unterteilt ist? Idealerweise ein Skript, das den vollständigen Artikel anzeigt, wenn der Besucher eine Suchmaschine ist (wenn dies für SEO nicht schädlich wäre). Andere Vorschläge sind willkommen.

Nebenbei bemerkt, wenn ich mich mit Black Hat-Techniken beschäftigen würde, gäbe es da draußen eine Goldmine an Inhalten, die ich ausnutzen könnte. Denk darüber nach.

Persönlich sollte dieses Problem in einem zukünftigen Update von Wordpress behoben werden.

Update : Eine ähnliche Frage , die detailliert , wie Wordpress die gleiche kanonische URL erstellt für alle Seiten in einer paginierte Sequenz gefragt wurden , hier jedoch die Antwort , die gebucht wurde und markiert als richtig die Frage nicht beantworten. Diese Lösung funktioniert nur für ausgelagerte Kommentare, nicht für paginierte Beiträge.

Update 2 : Laut diesem Blog-Beitrag von Google können wir die Beziehung zwischen Seiten verwenden rel=”next”und rel=”prev”angeben. So sollten wir zum Beispiel Folgendes <head>auf Seite 2 aufnehmen :

<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" />

Und es sollte kein rel = "prev" oder "next" geben, wenn keine Seite danach / davor steht.

Christine Cooper
quelle
Scheint, als hätten Sie die Antwort gefunden. Möchtest du es als solches formatieren und akzeptieren? Ich denke, viele Menschen werden davon profitieren.
Tomas Buteler
@tbuteler Obwohl ich die Lösung gefunden habe, bei jeder paginierten Seite eine eindeutige kanonische URL hinzuzufügen und diese link rel="prev"/"next"bei Bedarf einzuschließen , habe ich kein Skript dafür geschrieben. Allerdings Toscho im Chat erwähnt , dass er möglicherweise etwas hat. In diesem Bereich finden Sie Updates ...
Christine Cooper
Ich habe den Code in meiner Antwort auf die von Ihnen genannte Frage aktualisiert . Ich habe es getestet und es löst Ihr Problem. Gute Arbeit, um diesen Fehler zu finden!
Shea

Antworten:

2

Das Grundproblem für eine Skriptlösung ist: rel_canonicalBietet keinen nützlichen Filter. Also müssen wir diese Funktion ersetzen:

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

Das nächste Problem: $GLOBALS['numpages']ist vorher leer setup_postdata(). Wir könnten diese Funktion bereits hier aufrufen, aber sie könnte Nebenwirkungen haben.

Hier ist eine Lösung, die auch korrekte Prev / Next-Links hinzufügt und Konfliktkonflikte durch verhindert adjacent_posts_rel_link_wp_head. Wir haben zu spät in wp_headPriorität 9 eingehakt, um den letzteren Haken zu deaktivieren.

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' );
}
Fuxia
quelle
Vielen Dank für das Skript. Haben Sie die Zeit, die link rel="prev"/rel="next"in Update 2meiner Frage angegebene Funktion hinzuzufügen?
Christine Cooper
Das würde ein erfordern setup_postdata()- etwas, das viel später beim Rendern von Seiten passieren sollte.
Fuxia
Sollte ich eine separate Frage dafür öffnen, obwohl die 'link rel' erforderlich ist, damit dieses Indexierungsproblem gelöst werden kann?
Christine Cooper
@ChristineCooper Das habe ich jetzt hinzugefügt. Ich bin mir nicht sicher, welche Nebenwirkungen es verursachen könnte.
Fuxia
1
Ich habe dies eine Weile verlassen, um zu testen, wie Google die Beiträge jetzt indiziert, und ich freue mich, bestätigen zu können, dass dieses Skript perfekt funktioniert. Gut gemacht!
Christine Cooper
0

Nur zu Ihrer Information: Das WordPress SEO-Plugin von Yoast kümmert sich um das Hinzufügen von rel = prev- und rel = next-Metadaten zu den <head>Seiten. Dieser Typ (Yoast) denkt an alles!

Miriam Schwab
quelle
1
-1 Ich bin mir dessen bewusst, aber ich bin nicht bereit, ein umfangreiches SEO-Plugin nur für einen kleinen Teil seiner Funktionen zu installieren. Sie sollten es auch nicht tun, es sei denn, Sie werden alles verwenden, was dazu gehört.
Christine Cooper