Frage

Ich bin mir nicht sicher, welche Lösung hier als Lösung am besten funktionieren würde, aber was ich suche .

Ich gehe davon aus Post ID, während Sie die von Ihnen ausgewählte Seitenvorlage verwenden.

Ich möchte, dass die Seite für beide Domänen zugänglich ist und nur die neue Domäne die definierte Vorlage verwenden würde.

Wie kann das getan werden?

AktualisiertIch denke, die andere Möglichkeit wäre, zuerst eine einzelne Seite einzurichten, damit sie eine eigene Subdomain haben kann, indem sie einen integrierten WordPress -Code verwenden, der für Multisite verwendet wird? Mit anderen Worten, wenn eine benutzerdefinierte Subdomain einer bestimmten Post -ID zugewiesen werden könnte, könnte ein CNAME -Datensatz für diese Subdomain für die neue Domäne festgelegt werden ... Ich bin mir nicht sicher, wie man dies am besten erreicht.

War es hilfreich?

Lösung

Mit diesem Code können Sie einen benutzerdefinierten Meta -Wert festlegen. Wenn der Domänenname (oder Subdomain, wenn Sie den Code bearbeiten), wird die Abfrage geändert, um diesem Beitrag übereinzustimmen. Die Seitenvorlage wird nur für diese Anfrage verwendet, nicht für Anforderungen über die "normale" URL.

Dies ändert keine Links auf dieser Seite: Sollten sie zur "normalen" Website gehen oder in der Subdomain bleiben?

Wie Sie dies auf der DNS -Seite lösen, ist wahrscheinlich wahrscheinlich Eine Serverfehlerfrage.

define( 'WPSE4558_STANDARD_SERVER', 'www.example.com' );
define( 'WPSE4558_META_KEY', 'domainname' );

add_filter( 'request', 'wpse4558_request' );
function wpse4558_request( $query_vars )
{
    $query_vars['is_subdomain_request'] = false;
    if ( WPSE4558_STANDARD_SERVER != $_SERVER['SERVER_NAME'] ) {
        $query_vars['meta_key'] = WPSE4558_META_KEY;
        // This can also be just the subdomain, if you edit it
        $query_vars['meta_value'] = $_SERVER['SERVER_NAME'];
        $query_vars['is_subdomain_request'] = true;

    }
    return $query_vars;
}

add_action( 'parse_query', 'wpse4558_parse_query' );
function wpse4558_parse_query( &$wp_query )
{
    if ( $wp_query->get( 'is_subdomain_request' ) ) {
        $wp_query->is_home = false;
        $wp_query->is_page = true;
        $wp_query->is_singular = true;
    }
}

add_filter( 'page_template', 'wpse4558_page_template' );
function wpse4558_page_template( $template )
{
    global $wp_query;
    $id = $wp_query->get_queried_object_id();
    if( ! $wp_query->get( 'is_subdomain_request' ) && get_post_meta( $id, WPSE4558_META_KEY ) ) {
        // This is a page that has a subdomain attached, but the current request is not via that subdomain
        // So use the normal template hierarchy, ignore the page template
        $templates = array();
        $pagename = $wp_query->get_queried_object()->post_name;
        if ( $pagename ) {
            $templates[] = "page-$pagename.php";
        }
        if ( $id ) {
            $templates[] = "page-$id.php";
        }
        $templates[] = "page.php";
        $template = locate_template( $templates );
    }
    return $template;
}

Andere Tipps

Aktualisierte Antwort

Okay, es hört sich so an, als ob Sie eine Option im Schreibfeld möchten, mit der Sie einen Beitrag vor Ort A komponieren können und optional auch diesen Beitrag an Site B veröffentlichen. Es klingt nach einem interessanten Projekt und sollte möglich sein WordPress und XMLRPC.

Hier ist ein Beispielcode. Durch die Kombination des Codes in diesem Artikel mit einer benutzerdefinierten Metabox sollten Sie Ihr Ziel erreichen können. Viel Glück!

Hier sind einige weitere gute Ressourcen:

NB Um sicherzustellen, dass die von Ihnen erstellten Updates für Beiträge syndiziert sind, möchten Sie möglicherweise auch die Post_ID des Beitrags auf der Remote -Site in einem benutzerdefinierten Feld speichern. Sie sollten wahrscheinlich auch eine Verzögerung von wenigen Minuten vor dem Senden des ersten Remote -Posts umsetzen (ich weiß, dass ich unweigerlich Änderungen unmittelbar nach der Veröffentlichung fast alles vornehme, aber das kann ich nur sein).


Die ursprüngliche Antwort ist unten


Entweder (i) Setup .htaccess mit mod_rewrite, um die Post -URL zu maskieren, (ii) Ihre Beiträge über mehrere Websites hinweg mit RSS mit wp_insert_post oder (iii) einen Ordner in Ihrem Thema erstellen Post-Redirect und fügen Sie die folgenden Dateien hinzu:

  • Post-Redirect-meta.php - Erstellen Sie ein Meta -Feld namens "Post -Direct -URL" mit einem Texteingangsfeld, das in Ihrer Postmeta -Tabelle gespeichert wird.

  • post-rotirect.php - Erstellen Sie eine Themenvorlage namens "Post -Redirect", die bedingt (basierend auf dem HTTP -Referrer) eine 301 -Umleitung unter Verwendung der in der META -Box "Post redirect URL" gespeicherten Ziel -URL auf Ihrer Post -Bearbeitungs -Seite ausführt. Auf diese Weise können Sie den ursprünglichen Beitrag in einem Rahmen auf der neuen Domäne anzeigen.

Basierend auf Ihren angegebenen Anforderungen scheinen diese die einfachsten Lösungen zu sein, aber es ist alles andere als klar, dass dies Ihre Absicht ist (z. B. was macht "Ich möchte, dass die Seite für beide Domains zugänglich ist"Mean? Sind beide Websites WP? Wie ist die Geschäftsbeziehung zwischen den beiden Websites?). Es würde helfen, wenn Sie das Endergebnis, das Sie erreichen möchten, und eine Liste Ihrer wichtigsten Bedenken klarer erklären würden. Was auch immer Ihre Antwort ist zu Wenn möglich, erklären Sie bitte auch "Warum".

Der Code, um dies zu erreichen, ist nicht kompliziert, aber bevor Sie die Schwierigkeiten durchlaufen, klären Sie bitte, was Sie erreichen möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top