Agregue constantes de red adicionales a wp-config.php dinámicamente

10

Al comenzar con una instalación de red nueva, el primer paso es una instalación de sitio único que tenga una línea adicional en el archivo wp-config.php :

define( 'WP_ALLOW_MULTISITE', true );

Después de eso tenemos que ir a Tools > Network Setup , ingresar algunos detalles como el nombre de la red y el correo electrónico del superadministrador y finalmente presionar el botón para ejecutar la configuración.

El siguiente paso que aparece es en realidad dos pasos:

  1. Agregue constantes adicionales a su archivo wp-config.php

    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', true );
    define( 'DOMAIN_CURRENT_SITE', 'example.com' );
    define( 'PATH_CURRENT_SITE', '/' );
    define( 'SITE_ID_CURRENT_SITE', true );
    define( 'BLOG_ID_CURRENT_SITE', true );
    
  2. Agregue algunas reglas a su archivo .htaccess .

Como no hago instalaciones de un solo sitio (ya no hay razón para eso), me gustaría agregar esas constantes dinámicamente a mi archivo wp-config.php :

define( 'WP_ALLOW_MULTISITE', true );
if ( SOME_CHECK_IF_STEP-1_WAS_PASSED )
{
    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', true );
    define( 'DOMAIN_CURRENT_SITE', 'example.com' );
    define( 'PATH_CURRENT_SITE', '/' );
    define( 'SITE_ID_CURRENT_SITE', true );
    define( 'BLOG_ID_CURRENT_SITE', true );
}

Así que no tengo que ir al wp-config.php cada vez y editarlo nuevamente.

Lo que se me ocurrió fue verificar la base de datos para la tabla {$wpdb->prefix}sitemeta , pero no quiero hacer una consulta adicional en cada carga del sitio. Lo que pensé en 2nd fue comprobar si el blogs.dir ya existe, pero ese no es el caso.

  

Pregunta: ¿Cómo puedo indicar que ya pasé el primer paso de la configuración de la red de manera que no tenga una sobrecarga masiva o disminuya el rendimiento?

    
pregunta kaiser 12.08.2013 - 14:18

3 respuestas

1

No he probado esto, pero si necesita encontrar una solución de este tipo, probablemente intentaría hacerlo de la siguiente manera agregando un script a la condición if ( SOME_CHECK_IF_STEP-1_WAS_PASSED ) que describió anteriormente, eso sería :

  • compruebe el DB para la tabla {$wpdb->prefix}sitemeta ;
  • si no existe - > devuelve falso;
  • si existe - > agregue un trabajo cron de WP para volver a escribir wp-config.php - > devuelve verdadero.

El trabajo cron de WP reescribiría el wp-config.php para eliminar la verificación por completo.

De esta manera, solo tienes una solicitud de base de datos adicional hasta que la red esté configurada y el trabajo cron haya hecho su magia.

Ten en cuenta que vale la pena el esfuerzo, aunque ...;)

    
respondido por el Alain Schlesser 10.03.2016 - 13:15
-1

Inspeccione los archivos wp-admin/network.php y wp-admin/includes/schema.php . Puede crear una condición basada en WP_INSTALLING_NETWORK

Actualización:

if (is_admin()){
    /* First Step */
    if (!defined( 'WP_ALLOW_MULTISITE')){
            $current_wp_config = file_get_contents(ABSPATH . 'wp-config.php');

            $my_defines = "/* First we put WP_ALLOW_MULTISITE  */\r\n" .
                    "define('WP_ALLOW_MULTISITE', true); \r\n";

            $current_wp_config = str_replace("/* That's all, stop editing", $my_defines . "/* That's all, stop editing", $current_wp_config);       
            file_put_contents(ABSPATH . 'wp-config.php', $current_wp_config);   
    }   
    /* Second Step */
    if (!defined("WP_DEFINES_IMPORTED") && defined("WP_INSTALLING_NETWORK") && $_POST){
        $current_wp_config = file_get_contents(ABSPATH . 'wp-config.php');

        $my_defines = "/* Now we define */\r\n" .
            "define('WP_DEFINES_IMPORTED', true); \r\n" .
            "define('MULTISITE', true); \r\n".
            "define('SUBDOMAIN_INSTALL', true); \r\n".
            "define('DOMAIN_CURRENT_SITE', '". get_clean_basedomain() . "'); \r\n".
            "define('PATH_CURRENT_SITE', '". parse_url(  trailingslashit( get_option( 'home' ) ), PHP_URL_PATH ) . "'); \r\n".
            "define('SITE_ID_CURRENT_SITE', 1); \r\n".
            "define('BLOG_ID_CURRENT_SITE', 1); \r\n";

        $current_wp_config = str_replace("/* That's all, stop editing", $my_defines . "/* That's all, stop editing", $current_wp_config);       
        file_put_contents(ABSPATH . 'wp-config.php', $current_wp_config);   
    }
}
  1. pon esto en la carpeta de los plugins de mu.
  2. instalación wp nueva
  3. ir al panel de administración
  4. haga clic en las herramientas
  5. haga clic para configurar la red
  6. ejecuta la configuración
  7. ???
  8. ganancias !!!

    
respondido por el Ünsal Korkmaz 12.08.2013 - 15:38
-1

Si su configuración es la misma cada vez (instalación de subdominio), entonces podrá pegar todo el fragmento en su primer paso:

define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', true ); define( 'DOMAIN_CURRENT_SITE', $_SERVER[ 'HTTP_HOST' ] ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', true ); define( 'BLOG_ID_CURRENT_SITE', true );

    
respondido por el Geoff 26.01.2016 - 21:41

Lea otras preguntas en las etiquetas