@ Insanity5902 : La distribuzione di un sito WordPress da una casella all'altra è stata una PITA dal primo giorno in cui ho iniziato a lavorare con WordPress. (A dire la verità è stato un PITA con Drupal per 2 anni prima di iniziare con WordPress, quindi il problema non è certo esclusivamente con WordPress.)
Mi dava fastidio che ogni volta che avessi bisogno di spostare un sito avrei dovuto dedicare così tante volte duplicati e mi ha impedito di implementare per testare con la frequenza che avrei preferito. Quindi circa 4-6 mesi fa ho iniziato a lavorare su un plugin per risolvere il problema di migrazione del webhost e ho menzionato le mie idee sul forum di WP Tavern .
Bene, oggi, ho quasi funzionato e lo chiamo convenientemente " WP Migrate Webhosts ". Anche se il plug-in è ancora molto beta (probabilmente anche alfa) data la tua domanda, penso di essere pronto a lasciare che le persone inizino a battere.
Il caso d'uso previsto è che:
- per prima cosa lo sviluppatore gestisce il caricamento di tutti i file dei temi e dei plugin modificati tramite FTP,
- quindi carica il database MySQL di sviluppo sul server di test nella sua interezza e infine
- quindi esegue il plug-in per migrare qualsiasi riferimento dal dominio precedente a quello nuovo. (Il mio plugin non tenta di risolvere l'unione di nuovi campi di database o tabelle con dati in tempo reale; QUESTO è un problema molto più grande che non sono sicuro di come risolvere.)
Puoi scaricare il plug-in dal mio sito Web e decomprimerlo nella directory dei plug-in (se non sai come farlo, questo plug-in non fa per te perché richiede che qualcuno sappia cosa stanno facendo per usarlo.) mantieni questo plugin online fino a quando non lo rilascerò su WordPress.org, dopodiché dovresti cercarlo lì.
Per usarlo si prende un approccio diverso nella vostra wp-config.php
che la normale commentando le quattro (4) definisce DB_NAME
, DB_USER
, DB_PASSWORD
e DB_HOST
invece registrare i valori predefiniti per webhosts e quindi registrare informazioni su ciascun hosting stessa. Ecco come wp-config.php
potrebbe apparire quel segmento di (nota la prima sezione è il codice non necessario commentato e nota anche che ho impostato il mio file hosts sul mio computer locale con .dev
domini di livello superiore non instradabili per facilitare lo sviluppo quotidiano. Sul Mac VirtualHostX lo rende un gioco da ragazzi):
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
//define('DB_NAME', 'wp30');
/** MySQL database username */
//define('DB_USER', 'wp30_anon');
/** MySQL database password */
//define('DB_PASSWORD', '12345');
/** MySQL hostname */
//define('DB_HOST', '127.0.0.1:3306');
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/wp-webhosts.php');
register_webhost_defaults(array(
'database' => 'example_db',
'user' => 'example_user',
'password' => '12345',
'host' => 'localhost',
'sitepath' => '', // '' if WordPress is installed in the root
));
register_webhost('dev',array(
'name' => 'Example Local Development',
'host' => '127.0.0.1:3306',
'domain' => 'example.dev',
'rootdir' => '/Users/mikeschinkel/Sites/example/trunk',
));
register_webhost('test',array(
'name' => 'Example Test Server',
'rootdir' => '/home/example/public_html/test',
'domain' => 'test.example.com',
));
register_webhost('stage',array(
'name' => 'Example Staging Server',
'rootdir' => '/home/example/public_html/stage',
'domain' => 'stage.example.com',
));
register_webhost('live',array(
'name' => 'Example Live Site',
'rootdir' => '/home/example/public_html/',
'password' => '%asd59kar12*fr',
'domain' => 'www.example.com',
));
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/set-webhost.php');
Spero che questo sia (principalmente) autoesplicativo. Ho cercato di rendere il codice il più pulito possibile, ma sfortunatamente richiede quelle due require_once()
linee criptiche prima e dopo il blocco del codice di registrazione dell'host web poiché non c'era modo per me di " agganciare " WordPress prima che wp-config.php
venga chiamato.
Dopo aver aggiornato il tuo wp-config.php
, puoi semplicemente utilizzare il collegamento URL wp-migrate-webhosts
per andare alla schermata di amministrazione in questo modo:
http://example.com/wp-migrate-webhosts
Quanto sopra ti porterà a una schermata di amministrazione come la seguente che ha un bel po 'di testo descrittivo e ti consente di migrare DA uno qualsiasi degli altri domini webhost con un solo clic dopo aver selezionato i domini da cui migrare ( NOTA : questo esempio mostra GIÙ da / stadio / server live di prova per lo sviluppo locale, ma state tranquilli che può migrare aL qualsiasi dominio in cui capita di essere situato. Questo significa anche il plugin sarà grande per l'assunzione di un sito vivo esistente e ottenere rapidamente un ambiente di sviluppo locale che lavora! ):
Se non è chiaro " migrazione " in questo contesto significa aggiornare tutti i riferimenti nel database corrente in modo che siano appropriati per l'host web attualmente definito (e " corrente " viene annusata dall'ispezione $_SERVER['SERVER_NAME']
).
La cosa interessante del plugin è che implementa alcune migrazioni di base ma chiunque può agganciarlo ed eseguire le proprie migrazioni . Ad esempio, se aggiungi un plug-in della galleria che memorizza i percorsi completi delle immagini nel database, puoi agganciare l' migrate_webhosts
azione a cui passeranno il " da " webhost e il " a " webhost ciascuno come un array di metadati e ti sarà permesso per eseguire tutto ciò che è necessario fare nel database utilizzando SQL o qualsiasi funzione API WordPress applicabile per eseguire la migrazione. Sì, nessuno di noi potrebbe farlo senza il plug-in, ma senza il plug-in ho scoperto che scrivere tutto il codice necessario era più sforzo di quanto valesse. Con il plugin è più semplice scrivere questi piccoli hook e farcela.
Potresti anche scoprire che le mie migrazioni falliscono nei casi limite che non ho testato e forse potresti aiutarmi a migliorare il plugin? Chiunque voglia può inviarmi un'e-mail tramite il mio account Gmail (il mio alias è "mikeschinkel").
Inoltre, il plugin è stato progettato per accettare user-definire i metadati hosting in aggiunta a quelli che riconosce come database
, user
, password
, host
, domain
ecc Un esempio perfetto potrebbe essere googlemaps_apikey
in cui è possibile memorizzare una delle diverse chiavi API per ciascun dominio che il vostro Google Map necessità di plugin per funzionare correttamente (chi tra voi che ha utilizzato un plug-in di Google Maps non ha distribuito un'app su un server live e ha dimenticato di cambiare il codice con la chiave API corretta? Dai, sii onesto ... :) Con questo plug-in, un googlemaps_apikey
elemento nel tuo array register_webhost () e un piccolo migrate_webhosts
hook personalizzato puoi eliminarlo efficacemente come un problema!
Bene, questo è tutto. Sto lanciando questo plugin qui sullo scambio di risposte di WordPress perché la domanda di @ Insanity5902 lo ha attivato. Fammi sapere se è utile, qui se appropriato o via e-mail in caso contrario.
PS Se decidi di usare questo, ricorda che è alpha / beta e ciò significa che cambierà, quindi preparati per un piccolo intervento chirurgico se vuoi usarlo ora e poi usa la versione rilasciata dopo che è stata picchiata da molte mani.
PPS Quali sono i miei obiettivi con questo? Adoro vederlo migrare nel core di WordPress in modo che tutti possano accedervi. Ma prima di ciò si può anche considerare che molte persone devono essere interessate a usarlo per assicurarsi che risolva effettivamente più problemi di quelli che potrebbe potenzialmente creare. Quindi, se ti piace l'idea, allora usala e aiutami a guadagnare slancio per un'eventuale inclusione fiduciosa nel core di WordPress.