Wie verwende ich eine andere Domain / Subdomain für Autoren / Kategorien auf einer einzelnen Site?

Ich bin mir nicht sicher, ob ich diese Frage richtig formuliert habe …

Meine Frau und ich haben in diesem Beispiel einen Blog, family.com , zu dem wir beide beitragen.

Ich möchte, dass family.com alle Blogposts anzeigt .

me.family.com würde nur Posts zeigen, die ich selbst geschrieben habe und her.family.com würde nur Posts anzeigen, die sie geschrieben hat. später werden wir kid1.family.com hinzufügen und so weiter …

Darüber hinaus machen sie / ich / wir manchmal Projekte, die über einen Beitrag hinausgehen. project1.com würde nur alle Beiträge in der Kategorie ‘project1’ anzeigen. Im Gegensatz zu Autoren haben jedoch nur bestimmte Kategorien eigene Domänennamen.

wp-subdomains-revisited und domain-mapping-system zusammen scheinen dem zu entsprechen, was ich suche, aber sie sind veraltet und ich bin mir sicher, dass ich sie nicht selbst replizieren konnte.

Edit 1: Ich fand diese wunderbare Antwort von mikeschinkel : Mehrere Domainnamen – Eine WP-Installation (Nicht-Multisite) – Standard Jeder Domain-Name zu Category Archive

Edit 2: Ich habe mikeschinkels Code auf meiner Seite bearbeitet. Groß! Jetzt habe ich versucht, es so zu modifizieren, dass es auch mit Subdomains funktioniert. Das ist nicht so gut gelaufen – nur eine weiße Seite lädt, wenn meine Änderungen vorhanden sind.

Edit 3: Die Seite lädt wieder mit funktionierenden Domains und Subdomains! Wie aufregend!

Die nächste Aufgabe besteht darin, dass alle Links ihre jeweilige Domain / Subdomain verwenden. Zum Beispiel sollte ein Post- Urlaub , der von mir in der Kategorie project1 geschrieben wurde , als family.com/holiday , me.family.com/holiday oder project1.com/holiday erscheinen, abhängig davon, aus welchem ​​Sub / Domain er verlinkt ist. Irgendwelche Vorschläge würden wild geschätzt werden !!!

(Es muss auch mit WPML arbeiten -> me.family.com/holiday sollte , wenn übersetzt, sie werden.family.com/ 休 日 / … beängstigend!)

Edit 4: Nur um zu verdeutlichen, funktional sollte dies nicht anders sein, als einen einzelnen Autor oder ein Kategorie-Archiv zu sehen, der einzige Unterschied ist, dass das Archiv seinen eigenen Sub / Domain hat.

Meine TLD ist .is … und meine Domain ist mein Familienname. Das bedeutet, dass meine URL auf halbem Wege ein Satz ist -> _adam.rabbit.is / …

Das Ziel ist eine URL zu haben, die für jede Beziehung spezifisch ist:
adam.rabbit.is/gartenarbeit
wife.rabbit.is/codierung
rabbit.is/travelling

Edit 5: Aktualisierter Code – funktioniert größtenteils jetzt. Ich zögere, es als getriggers zu markieren, weil ich die Basiskategorie nicht entfernt habe oder für jede Seite einen separaten Header / Titel hinzugefügt habe … aber so funktioniert dieser Code und triggers die Hauptfrage des Posts. Ich hoffe, dass jemand anderes es nützlich findet 🙂

Edit 6: Ich habe ein nettes Plugin namens wp-no-base-permalink gefunden, welches die Kategorie base entfernt. Ich habe den Code aktualisiert, um mit diesem Plugin zu arbeiten. Wenn ich jetzt adam.rabbit.is/uncategorized tippe, werden alle nicht kategorisierten Beiträge von mir angezeigt – genau das, wonach ich gesucht habe!

antworte unten …

Solutions Collecting From Web of "Wie verwende ich eine andere Domain / Subdomain für Autoren / Kategorien auf einer einzelnen Site?"

Gibt es einen Grund, warum Sie Subdomains über “Unterverzeichnisse” benötigen (Ich setze das in Anführungszeichen, weil es eigentlich kein echtes Unterverzeichnis ist … weiterlesen)? Dies wäre viel einfacher, wenn Sie mit family.com/me, family.com/her, family.com/project1, etc gehen wollten …

Wenn Sie diese Route verwenden, können Sie mit WP_Query Seitenvorlagen mit benutzerdefinierten Schleifen erstellen und diese den Seiten im WP-Admin zuweisen. Wenn Sie hübsche Permalinks verwenden, können Sie die Seite benennen, was Sie wollen, und Sie werden einen gut aussehenden Link haben.

Ich kann mir ehrlich gesagt nicht vorstellen, wie das mit Subdomains möglich wäre, aber das ist weniger eine WP-Frage und eher eine Frage der Domain / Server-Verwaltung.

Der beste Weg, um eine Inhaltstrennung zwischen Sites zu erreichen, ist das Trennen ihrer DBs. Als Faustregel ist es einfacher, Inhalte zu sammeln, die es trennen, Suchen, RSS-Feeds, Social Sharing, SEO müssen sich möglicherweise auf verschiedenen Subdomains unterschiedlich verhalten, und es gibt keine Möglichkeit, dass die Kinder dem von den “alten” auferlegten Design zustimmen Jungs”.

Die einfachste Lösung ist, WordPress in einem Netzwerkmodus zu verwenden, und dann, wo immer Sie schreiben oder ein Plugin suchen, das automatisch Inhalte vom “Quellblog” zur richtigen Aggregationsseite importiert.

wp-config.php

if ( is_alt_domain( $_SERVER['SERVER_NAME'] ) ) { $domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ); define( 'WP_SITEURL', 'http://www.' . $domain ); define( 'WP_HOME', 'http://www.' . $domain ); } else if (is_sub_domain( $_SERVER['HTTP_HOST'] ) ) { $domain = "{$_SERVER['HTTP_HOST']}"; define( 'WP_SITEURL', 'http://' . $domain ); define( 'WP_HOME', 'http://' . $domain ); } else if (! (is_main_domain( $_SERVER['SERVER_NAME']) ) ) { Header( "HTTP/1.1 301 Moved Permanently" ); Header( "Location:http://family.com", true, 301 ); exit; } function is_main_domain( $domain ) { $domain = $_SERVER['HTTP_HOST'] ; return strcmp( $domain, my_main_domain() ) == 0 ; } function is_sub_domain ( $domain ) { $domain = str_replace( my_main_domain(), '', $_SERVER['HTTP_HOST'] ); return in_array( substr( $domain, 0, -1), sub_domains() ); } function is_alt_domain( $domain ) { $domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ); $domain = substr( $domain, 0, strrpos( $domain, '.') ); return array_key_exists( $domain, alt_domains() ); } function sub_domains() { return array( 'me', 'her', 'kid1', ); } function alt_domains() { return array( 'project1' => 'com', 'project2' => 'com', 'project3' => 'is', ); } function my_main_domain() { return 'family.com'; } 

functionen.php

 // this seems to be important update_option('siteurl','http://' . $_SERVER["HTTP_HOST"]); update_option('home','http://' . $_SERVER["HTTP_HOST"]); add_action( 'category_link', 'yoursite_category_link', 11, 2 ); function yoursite_category_link( $category_link, $category_id ) { $parts = explode( '/', $category_link ); // if %category% in http://%domain%/%category%/ // is in alt_domains() update the category_link if ( array_key_exists("{$parts[3]}", alt_domains() ) ) { $tld = alt_domains()[$parts[3]]; $category_link = "http://www.{$parts[3]}.{$tld}/"; // Strip 'category/%category%/' } return $category_link; } add_action( 'author_link', 'yoursite_author_link', 11, 2 ); function yoursite_author_link( $author_link, $author_id ) { $parts = explode( '/', $author_link ); // if %author% in http://domain/author/%author%/ // is in sub_domains() update the author_link if ( "{$parts[3]}" == "author" && in_array("{$parts[4]}", sub_domains() ) ) { $author_link = "http://{$parts[4]}.family.com/"; // Strip 'author/%author%/' } else { $author_link = "http://family.com/author/{$parts[4]}"; // Strip 'author/%author%/' } return $author_link; } add_action( 'init', 'yoursite_init' ); function yoursite_init() { // Remove the canonical redirect to the category page // if %category% in http://%category%.%ext%/ is a blogger category if ( is_alt_domain( $_SERVER['SERVER_NAME'] ) || is_sub_domain( $_SERVER['HTTP_HOST'] ) ) { $parts = explode( '/', strtolower( $_SERVER['REQUEST_URI'] ) ); if ( (count($parts) > 1) && ( array_key_exists("{$parts[1]}",alt_domains() ) || ( "author" == $parts[1] && in_array("{$parts[2]}", sub_domains() ) ) ) ) { remove_filter( 'template_redirect', 'redirect_canonical' ); } } } add_action( 'template_redirect', 'yoursite_template_redirect' ); function yoursite_template_redirect() { // Redirect any http://%domain%.%ext%/%category%/ to http://%category%.%ext%/ // and any http://%domain%.%ext%/author/%author%/ to http://%author%.%domain%.%ext% $parts = explode( '/', strtolower( $_SERVER['REQUEST_URI'] ) ); if ( array_key_exists( "{$parts[1]}", alt_domains()) ) { $tld = alt_domains()[$parts[1]]; wp_redirect( "http://www.{$parts[1]}.{$tld}/", 301 ); exit; } else if ( 'author' == $parts[1] && in_array("{$parts[2]}", sub_domains() ) ) { wp_redirect( "http://{$parts[2]}.famliy.com/", 301 ); exit; } } add_action( 'request', 'yoursite_request' ); function yoursite_request($query_vars) { // If %category% in http://%category%.%ext%/ is a blogger category set the // 'category_name' query var to tell WordPress to display the category page. if ( is_alt_domain( $_SERVER['SERVER_NAME']) || is_sub_domain( $_SERVER['HTTP_HOST'] ) ) { $category_domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ); $category_domain = substr( $category_domain, 0, strrpos( $category_domain, '.' ) ); $author_name = substr( $_SERVER['HTTP_HOST'], 0, strpos( $_SERVER['HTTP_HOST'], '.' ) ); $parts = explode( '/', $_SERVER['REQUEST_URI'] ); $category_name = "{$parts[1]}"; if ( array_key_exists($category_domain, alt_domains()) ) { if ( strlen( $category_name ) < 1 ) { $query_vars = array( 'pagename' => $category_domain.'-page' ); } else if ( term_exists("{$category_name}", 'category') ) { $query_vars = array( 'category__and' => array( get_category_by_slug($category_domain)->term_id, get_category_by_slug($category_name)->term_id ) ); } } else if ( in_array( $author_name, sub_domains() ) ) { if ( strlen( $category_name ) < 1 ) { $query_vars = array( 'pagename' => $author_name.'-page' ); } else if (term_exists("{$category_name}", 'category') ) { $query_vars = array( 'category_name' => $category_name, 'author_name' => $author_name ); } } } return $query_vars; } 

Und natürlich müssen Sie Ihre Subdomains (oder *) auf Ihrem Nameserver auch auf Ihre WordPress-Installation verweisen. Sie müssen auch einen virtuellen Host (Nginx) für andere Domänen hinzufügen, die Sie verwenden … und Sie müssen CORS einrichten.

Als eine Randnotiz wurde diese Antwort in Verbindung mit meiner nächsten Antwort / Frage verwendet – Wie kann ich eine statische Kategorie / Autor-Seite erstellen ? – sollte meine Absichten, eine mehrseitige Website zu haben, etwas klarer machen 🙂

Zugegeben, eine clevere Lösung, die im Rahmen Ihrer ursprünglichen Frage gut funktioniert. Für zukünftige Leser mit ähnlichen Anwendungsfällen würde ich vorschlagen, dass sie auch eine Installation mit mehreren Standorten (Netzwerk) planen.

Wenn es nur für Sub-Domain-Sites verwendet wird (dh keine Domain-Mapping), ist es nicht viel schwieriger zu erstellen und zu verwalten als eine Standard-Installation. Sie haben dann einen viel größeren Spielraum, um jede Unterstelle in Zukunft so zu entwickeln, wie Sie möchten, und viel mehr Flexibilität (ganz andere Themen usw.). Ganz zu schweigen von einer logischeren und einfach zu handhabenden Anordnung der Inhalte. Multisite ist auch viel erweiterbarer – fügen Sie Domain-Mapping hinzu und Sie können Ihre Business-Site, andere Freunde, Sportgruppen usw. auf dem einen Hosting-Account und dem Administrator-Login hinzufügen.

Das ThreeWP Broadcast-Plugin ist eine großartige Lösung für die Veröffentlichung von Posts auf beliebigen Websites, die für das Thema usw. geeignet sind, und einige Hintergrundinformationen dazu zeigen den scope von Multisite.

Nur mein Gefühl, dass der meiste Traffic auf diesen Post (aufgrund des Titels) in der Zukunft Leute sein wird, für die Multisite eine gute Passform ist, aber eine, die oft übersehen wird.

http://codex.wordpress.org/Create_A_Network

http://plugins.plainview.se/threewp-broadcast/