Configurare una rete wordpress con domini di terzo livello


11

Ho cercato di configurare un'installazione di rete WordPress. Tutto è andato abbastanza bene fino a quando non arriva al punto in cui il layout del mio dominio desiderato non si adatta bene.

Vorrei un layout come segue:

blog. *. stackexchange.com

quindi ad esempio, vorrei avere più siti in una rete che assomiglino a:

blog.wordpress.stackexchange.com
blog.apple.stackexchange.com
blog. $ site.stackexchange.com

Io penso che potrei ottenere questo lavoro con alcune regole ri-scrittura creativa, e l'intervento di DNS manuale, ma preferirei avere una configurazione in cui posso passare fuori la creazione di tutto, ma il DNS a qualcun altro (abbiamo già un processo per automaticamente creando tutti i sottodomini necessari nel DNS)

Dal mio giocare e leggere WP vuole davvero che i siti siano il dominio di livello successivo, quindi nel mio esempio precedente, vuole che il blog WP principale sia su stackexchange.com e che i blog di rete siano su wordpress.stackexchange.com.

Esiste un modo per ottenere l'effetto desiderato o devo semplicemente seguire il percorso di blog.stackexchange.com/$site?


2
Sono abbastanza sicuro che dovrai usare regole creative di riscrittura e intervento DNS manuale. Sono anche abbastanza sicuro che si tratti di un design originale, in modo da non poter trasferire la creazione di tutto tranne il DNS a <del> me</del> <ins> qualcun altro </ins> ... fischi </ sarcasmo> (:
Rebecca Chernoff il

Ho aggiunto una generosità nella speranza che qualcuno arrivi con una bella guida passo-passo in modo che Zypher possa passare più tempo a preoccuparsi di mantenere SE in piedi e meno tempo a guardare i blog della comunità.
nessuno

Risposte:


3

Per questo puoi usare il plugin Domain Mapper . Lo svantaggio è che avresti configurato manualmente ogni sottoblog.


Interessante, fa un reindirizzamento o serve semplicemente il contenuto? Immagino che cosa sto cercando di chiedere è la barra degli indirizzi cambia per l'utente finale?
Zypher,

@Zypher No, serve solo il contenuto.
nessuno il

1
Tutorial per l'uso del plug-in: ottopress.com/2010/… Importante: è senza problemi, quando si installa WP e si attiva il plug-in e dopo questo sistema di importazione dati o moigrate; non è così facile aggiungere questo plugin dopo che il blog ha una vita prima della mappatura del dominio. offre anche altri plugin per semplificare il lavoro nel backend di wp. wordpress.org/extend/plugins/networks-for-wordpress
bueltge

a causa della mancanza di alternative, hanno +150 rep.
nessuno il

1

Puoi farlo con un file sunrise.php personalizzato. Questo è essenzialmente il modo in cui funziona il plug-in di mappatura del dominio, tuttavia mette un bel front end su di esso. Per qualcosa di personalizzato, puoi scrivere un semplice PHP per fare sostanzialmente la stessa cosa.

L'essenza del multisito consiste nel capire quale sito servire. Il plugin di mappatura del dominio lo fa creando una tabella wp_domain_mapping e memorizzando le informazioni al suo interno. Pertanto, quando riceve una richiesta per xxx.com, appare in quella tabella e vede che corrisponde a blog_id 123.

Innanzitutto, esegui una configurazione di WordPress e rendila multisito. Non importa dove vive davvero, perché cambieremo tutto questo. Per semplicità, lo metterei su blog.stackexchange.com e lo trasformerei in un sito di tipo sottodirectory (quelli sono più facili). Le sottodirectory create sarebbero probabilmente le lumache. / wordpress, / apple, / qualunque cosa.

Quindi sì, per cominciare, lo stai davvero facendo vivere su blog.stackexchange.com/wordpress. Considera questo il tuo ambiente di stadiazione. Quando crei ciascun sito, puoi fare cose qui fino a quando non decidi di attivare la mappatura.

Per eseguire la mappatura del dominio da soli, senza il plug-in, dovresti fare qualcosa del genere:

Passo 1: aggiungi define( 'SUNRISE', 'on' );all'inizio del tuo file wp-config.php.

Passaggio 2: creare un file sunrise.php nella directory wp-content. Metti <?phpin cima per iniziare.

Fase tre: nel file sunrise.php sarà la tua logica per determinare quale sito caricare.

Baserai questo sulla $_SERVER[ 'HTTP_HOST' ]variabile. Come lo fai esattamente è facile: comunque lo vuoi fare. Se vuoi semplicemente scrivere una regex da cercare '/blog\.(.*)\.stackexchange\.com/'e poi cercare quel bit nel database, puoi farlo.

Dato che stai usando la stessa lumaca qui come "sottodirectory", non hai bisogno di una tabella separata. Puoi semplicemente guardare nella tabella principale di wp_blogs per trovare il sito di cui hai bisogno. Qualcosa di simile a questo:

$current_blog = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE path = '/wordpress/' LIMIT 1" );

Una volta che hai $ current_blog, allora hai bisogno del seguente codice:

$current_blog->domain = $_SERVER[ 'HTTP_HOST' ];
$current_blog->path = '/';
$blog_id = $current_blog->blog_id;
$site_id = $current_blog->site_id;
$current_site = $wpdb->get_row( "SELECT * from {$wpdb->site} WHERE id = '{$current_blog->site_id}' LIMIT 0,1" );
$current_site->blog_id = $current_blog->blog_id;

Questo pre-definisce le variabili globali $ current_blog e $ current_site invece di lasciare che le funzioni MU di WordPress lo facciano.

Questo sarebbe sufficiente per far funzionare il sito (dopo aver ottenuto il tuo DNS per puntarlo ad esso e aver risolto i contenuti dell'hosting virtuale), tuttavia la maggior parte degli URL statici utilizzati nel codice HTML rimarrebbe comunque su blog.stackexchange.com / wordpress, poiché è lì che sarebbe davvero il sito. Inoltre, la funzione URL canonico probabilmente non gradirebbe l'URL e reindirizzerebbe anche te.

Per ovviare a questi problemi, è probabile che tu voglia pre-definire diversi degli URL associati al sito. Cose come WP_SITEURL e WP_HOME. Inoltre, WP_CONTENT_URL, WP_PLUGIN_URL e WPMU_PLUGIN_URL. Ciò dovrebbe coprire la maggior parte dei casi di modifica degli URL.

Infine, ti consigliamo di impostare "COOKIE_DOMAIN". Dal momento che probabilmente desideri che gli accessi vengano condivisi su tutto il contenuto, puoi impostarlo su stackexchange.com o anche su un livello superiore se non desideri che vengano condivisi.

Se vuoi parlare dell'integrazione del normale sistema di login stackexchange in WordPress, posso rispondere anche a queste domande, ma sarebbe un po 'più dettagliato di una risposta. :)

Sentitevi liberi di inviarmi un'e-mail se volete più aiuto con questo. Sono contento di aiutare: otto su wordpress.org.

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.