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.