Ejecución de una copia de desarrollo de WordPress

Tener una instancia de desarrollo de WordPress es una buena manera de actualizar, desarrollar y realizar modificaciones en un sitio web sin interrumpir la versión en vivo de WordPress. Hay muchas formas de configurar una copia de desarrollo de WordPress, pero este artículo cubrirá los conceptos básicos, las mejores prácticas, los consejos y algunas herramientas para facilitar mucho la ejecución de una copia de desarrollo de WordPress.

Dos WordPresses, una base de datos

Nota: Si estás planeando desarrollar una base de datos, NO se recomienda este método.

Un enfoque popular para ejecutar una copia local de tu sitio en vivo es usar la misma base de datos tanto para local como para el sitio en vivo. El uso de la misma base de datos te permitirá trabajar en tu copia local y simplemente enviar cambios de local a su producción sin interrupciones en el tiempo de actividad.

Configuración de la copia local

Una vez que hayas configurado tus archivos locales, deberás modificar wp-config.php en la raíz de tu instalación local.

define('WP_HOME',  "http://{$_SERVER['HTTP_HOST']}");
define('WP_SITEURL', "http://{$_SERVER['HTTP_HOST']}");

ob_start( 'ob_replace_home_url' );
function ob_replace_home_url( $content ) {
    $home_urls = array(
        'http://site.testing.foo.com',
        'http://site.foo.com',
        'http://site.authoring.testing.foo.com',
        'http://site.authoring.foo.com',
    );

    $content = str_replace( $home_urls, WP_HOME, $content );

    return $content;
}

Ir arriba ↑

Usando un Drop-In

¿Qué pasa si no queremos piratear el código central? (Lo cual es una buena práctica para actualizar y compartir código fácilmente). Incluso hay un filtro para esto (pre_option_siteurl y pre_option_home) pero hay un problema: dentro de wp-settings.php,

  • el filtro no se puede definir hasta después de la línea 65 cuando se incluye functions.php
  • WordPress realiza llamadas a get_option en la línea 155 de (a través de wp_plugin_directory_constants())
  • los plugins no se definen hasta más adelante, alrededor de la línea 194.

Sin embargo, entre las líneas 65 y 155, hay algo que podemos usar, a saber, la carga del archivo db.php; el filtro se puede definir de forma segura allí. (Sin embargo, esto es quizás sólo la mitad del camino hacia el código “no central”). Verifica si ya tienes un wp-content/db.php existente antes de probar esta técnica. Es utilizado por paquetes como W3 Total Cache por razones similares.

<?php
// paste this in a (new) file, wp-content/db.php
add_filter ( 'pre_option_home', 'test_localhosts' );
add_filter ( 'pre_option_siteurl', 'test_localhosts' );
function test_localhosts( ) {
  if (... same logic as before to see if on dev site ...) {
     return "http://my.web.zz/dev";
  }
  else return false; // act as normal; will pull main site info from db
}