it-swarm.com.de

Kodieren Sie eine Domain fest in die kanonischen URLs von Yoast SEO

Aus verschiedenen Gründen wurde ich gebeten, ein WordPress-Blog über mehrere Subdomains zu duplizieren. Offensichtlich führt dies zu doppelten Inhaltsproblemen, die ich hoffentlich durch die Verwendung eines kanonischen Tags abmildern kann, das auf eine einzelne Unterdomäne (www) verweist.

Ich benutze jedoch Yoast SEO auf der Website. Dieses Auto generiert das kanonische Tag - und scheint die Subdomain zu verwenden, in der ich mich gerade befinde. Vermutlich wird dies von der WP_SITEURL-Einstellung oder ähnlichem übernommen, aber ich musste dies ändern, um die mehreren Unterdomänen überhaupt zuzulassen.

Kann ich Yoast SEO auf irgendeine Weise dazu zwingen, eine einzige Subdomain für alle kanonischen URLs zu verwenden? Ich benötige weiterhin alle Links auf der Site und die allgemeine Funktionalität, um die anderen Subdomains zu nutzen - unabhängig davon, auf welche Subdomains sie sich gerade befinden -, aber die Canonical sollte immer auf eine einzelne Subdomain verweisen.

Bitte beachten Sie, dass eine Weiterleitung nicht möglich ist.

Ich denke, der beste Weg, dies zu tun, ist mit der Yoast SEO API, aber ich bin damit nicht vertraut. Ich glaube, ich muss Folgendes anpassen, um meine gewünschte Subdomain einzuschließen, bin mir jedoch nicht sicher, in welcher Syntax der Rest der generierten URL enthalten sein soll.

add_filter( 'wpseo_canonical', 'http://www.' );
1
Gary

Unten sehen Sie ein kleines Plugin, mit dem Sie die Domain für die kanonische URL durch eine andere Domain ersetzen können sollten.

<?php
/*
 * Plugin Name: WPSE WPSEO Canonical
 * Plugin URI: http://wordpress.stackexchange.com
 * Description: Changes canonical url domain.
 * Author: Sisir
 * Version: 1.0
 * Author URI: http://developerpage.net
 *
 **/

add_filter('wpseo_canonical', 'swpseo_canonical_domain_replace');
function swpseo_canonical_domain_replace($url){

    $domain = 'google.com'; // this can be loaded from option table if you want admin to set it.
    $parsed = parse_url(home_url());
    $current_site_domain = $parsed['Host'];
    return str_replace($current_site_domain, $domain, $url);

}

Hinweis: Code nicht getestet. Lassen Sie mich wissen, wenn es nicht funktioniert.

3
Sisir