Qual è un flusso di lavoro migliore per la migrazione del database?
Quando mi viene chiesto di lavorare su un sito WordPress esistente, solitamente faccio una copia dell'intero sito e lavoro localmente. Per diversi anni ho utilizzato uno script come il seguente dopo aver importato il database localmente.
UPDATE wp_options SET option_value = replace(option_value, 'http://clientsite.co.uk', 'http://local.wordpressdev') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = REPLACE (guid, 'http://clientsite.co.uk', 'http://local.wordpressdev');
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://clientsite.co.uk', 'http://local.wordpressdev');
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://clientsite.co.uk', 'http://local.wordpressdev');
Ho visto consigli che suggeriscono di non modificare mai i guid dei post, ma il metodo sopra descritto ha sempre funzionato per me e, per quanto ne so, non ha mai causato problemi.
La mia domanda è: questo metodo di migrazione è ancora valido con WordPress 4? Inoltre, plugin come 'Search & Replace' o strumenti come WP-CLI
fanno questo lavoro meglio?

Utilizzo questo strumento per cercare e sostituire nei database - https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
Basta spostare i file via FTP, esportare e importare il database e poi eseguire lo script cercando il vecchio URL e sostituendolo con il nuovo URL. Poi ri-salvo i permalink e ho finito. Ho migrato WordPress migliaia di volte usando questo metodo.
Ho la vecchia versione dello script che è composta da un singolo file, non sono molto entusiasta della nuova versione, è un po' più lenta e con più protezioni per principianti che in realtà non apprezzo.

wp-cli ha questa funzionalità integrata. Se hai wp-cli installato, dalla riga di comando puoi eseguire:
wp search-replace 'http://oldurl.com' 'http://newurl.localhost'
o qualsiasi URL tu utilizzi nel tuo ambiente locale e questo aggiornerà il database del sito locale, tenendo conto degli array serializzati (cosa che l'OP non fa).
Puoi creare alias nel tuo .bash_profile per eseguire una serie di comandi wp-cli per creare un database, resettare un database, importare un database, effettuare search-replace su un database ecc. Quindi alla fine potresti avere un alias da eseguire sulla riga di comando che fa tutto il lavoro di importazione di un nuovo database per il tuo sito.
