WordPress 4.4 e as mudanças para multisite

6

O WordPress 4.4 está aí e com ele mudanças também ocorreram em ambientes com multisite habilitado. Além da correção de alguns bugs que a muito tempo existiam novas funcionalidades muito interessantes também foram adicionadas.

Vamos a algumas das modificações do multisite no WordPress 4.4.

A nova classe WP_Network

Desde a introdução da funcionalidade de Multisite para o core principal do WordPress que a variável global $current_site representa uma classe genérica (em php stdclass). Para dar um pouco mais de sentido à essa global e para abrir mais as possibilidades de se trabalhar com redes multisite, no WordPress 4.4 foi introduzida a classe WP_Network.

A classe WP_Network inicialmente é semelhante a uma linha da tabela wp_site e é populada com propriedades adicionais usadas no core do WordPress. A partir dessa classe será possível recuperar uma rede a partir do seu ID, assim como nas classes WP_Post e WP_Comments. Dessa forma será possível para o WordPress popular a variável global $current_site durante o carregamento com essa classe.

Se você usa um arquivo sunrise.php para popular essa global dê uma olhada em ms-settings.php e valide seu código com a nova implementação. Também dê uma conferida nos seus códigos caso exista interação direta com a variável global $current_site, principalmente se algo foi feito para extender essa funcionalidade.

Em um futuro próximo os desenvolvedores do core do WordPress estão planejando a adição de uma classe WP_Network_Query que será responsável por todas as queries de banco de dados necessárias para preencher um objeto do tipo WP_Network. Vamos acompanhar.

Inclusão de funções *_network_option

A tabela wp_sitemeta guarda as opções/configurações específicas de uma rede dentro do ambiente Multisite. Durante a criação da classe WP_Network foi percebida a necessidade de se preencher informações de uma rede específica, para isso foram incluídas funções semelhante às funções *_blog_option(), que são:

  • add_network_option();
  • update_network_option();
  • get_network_option();
  • delete_network_option();

Todas elas recebem como parâmetro o ID de uma rede. As funções *_site_option() continuam existindo, com o mesmo funcionamento, mas a partir de agora elas passam a fazer chamada para as funções *_network_option() informando o ID da rede atual.

Em futuros releases os desenvolvedores do core do WordPress estão vendo a possibilidade de se introduzir uma rede com o ID 0, afim de armazenar opções globais entre todas as redes.

Novos hooks no WordPress 4.4

Com a inclusão de uma nova classe e de novas funções no core do WordPress 4.4, novos hooks também surgiram. Abaixo listamos os hooks incluídos para o multisite:

  • before_signup_header: Hook de ação que é disparado antes do cabeçalho de inscrição no arquivo wp-signup.php;
  • ms_network_not_found: Hook de ação disparado quando a variável global $current_site não foi preenchida e a função ms_not_installed() está para ser chamada.
  • invite_user: Hook de ação que é chamado sempre que um usuário é convidado para uma rede mas o e-mail de notificação ainda não foi disparado.

Outras melhorias e correções de bugs

No total, 51 tickets foram fechados no desenvolvimento do WordPress 4.4 somente relativos à multisite. Caso seja necessário se aprofundar mais nessas melhorias podemos ver o histórico de todos os tickets fechados consultando o core trac do WordPress.

Uma melhoria relevante é a mudança de comportamento da página de configurações de links permanentes do site principal da rede, que irá refletir o prefixo de links definidos nas configurações do site na rede, e não irá mais forçar o /blog como acontecia antes.

Também é importante relatar que duas funções agora são deprecated e provavelmente serão removidas em futuros releases, então caso você utilize em seu código get_admin_users_for_domain() ou create_empty_blog() estude novas alternativas.

Saiba tudo sobre a versão 4.4 do WordPress

  • Rodrigo Vieira Eufrasio da Silva

    Parabéns Arilton pelo belíssimo post, essas informações serão importantes futuramente qual eu aprender utilizar o multi-sites.

    • Arilton Freitas

      Obrigado Rodrigo. Sucesso nos seus estudos.

  • Alexandre

    Qual o impacto da atualização do wordpress 4.3.1 com Multi-site Ativado/Configurado para a nova versão.
    Tentei uma atualização manual e perdi todo o acesso ao site e área administrativa.

    • Arilton Freitas

      Oi Alexandre, aqui não tivemos nenhum problema com essa atualização. Ative o debug log no seu projeto e verifique, pois você deve estar tendo algum erro fatal de PHP.

      • Alexandre

        Arilton,
        Detectamos o problema
        – um plugin que não é mais utilizado, estava interferindo nas bibliotecas do servidor. Removemos ele e tudo foi atualizado.
        Agora é homologar.

        • Arilton Freitas

          Opa, muito bom Alexandre!