Adicione constantes de rede adicionais ao wp-config.php dinamicamente

Ao começar com uma nova instalação de rede, o primeiro passo é uma instalação de site única que possui uma linha adicional no arquivo wp-config.php :

 define( 'WP_ALLOW_MULTISITE', true ); 

Depois disso, temos que ir para Tools > Network Setup , inserir alguns detalhes como o nome da rede e o email do super admin e finalmente apertar o botão para executar a configuração.

O próximo passo que aparece é realmente duas etapas:

  1. Adicione constantes adicionais ao seu arquivo 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. Adicione algumas regras ao seu arquivo .htaccess .

Como não faço instalações de site único (sem motivo para isso), gostaria de adicionar essas constantes dinamicamente ao meu arquivo 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 ); } 

Então eu não tenho que ir ao wp-config.php cada vez e editá-lo novamente.

A primeira coisa que me veio à mente foi verificar o database para a tabela {$wpdb->prefix}sitemeta , mas não quero fazer uma consulta adicional em cada carga do site. A segunda coisa que eu pensei era verificar se o blogs.dir já existe, mas esse não é o caso.

Pergunta: Como posso indicar que já passei o primeiro passo da configuração da rede de forma que não tenha uma sobrecarga maciça ou diminua o desempenho.

Solutions Collecting From Web of "Adicione constantes de rede adicionais ao wp-config.php dinamicamente"

Eu não testei isso, mas se você precisar encontrar essa solução, provavelmente tentaria fazê-lo da seguinte maneira, adicionando um script na if ( SOME_CHECK_IF_STEP-1_WAS_PASSED ) que você descreveu acima, isso seria :

  • verifique o database para a tabela {$wpdb->prefix}sitemeta ;
  • se não existir -> retornar falso;
  • se existe -> adicione um trabalho cron de WP para rewrite wp-config.php -> return true.

O trabalho WP cron reescreva o wp-config.php para eliminar a verificação completamente.

Desta forma, você só tem uma solicitação de database adicional até que a rede esteja configurada e o trabalho do cron seja mágico.

Certifique-se de que vale a pena o esforço, no entanto …;)

Inspecione os arquivos wp-admin/network.php e wp-admin/includes/schema.php . Você pode criar uma condição com base em WP_INSTALLING_NETWORK

Atualizar:

 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. Coloque isso na pasta mu-plugins.
  2. Instalação wp fresca
  3. vá para o painel de administração
  4. clique para ferramentas
  5. Clique para configurar a rede
  6. execute a configuração
  7. ???
  8. lucro!!!

insira a descrição da imagem aqui

Se a sua configuração for a mesma vez (instalação de subdomínio), você poderá colar todo o pedaço em sua primeira etapa:

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 );