Dica rápida para resolver um problema que me atormentou demais nos últimos dias. Às vezes precisamos incluir funções externas em nossos blogs – estarão fora da instalação do WordPress – então cria-se uma chamada pelo arquivo wp-load.php, que fica na pasta-raíz. Ele fará a “integração” entre a função e a base do WordPress, garantindo o funcionamento adequado. É comum ver o uso do wp-load em temas e até certos plugins embutidos em temas.
Acontece que a chamada pode ter sido feita pelo caminho relativo, aquele usando dois pontos e barra (../) para indicar a subida de um nível na hierarquia das pastas. Se o plugin tiver uma instalação incomum e o caminho relativo mudar, adeus funcionamento, pois o wp-load não será mais encontrado.
Descobri com o desenvolvedor Frankie Jarret como chamar o wp.load do jeito certo. Pelo menos pra mim funcionou perfeitamente.
Uma chamada “errada” seria algo parecido com isso:
<?php require_once('../../../../../wp-load.php'); ?>
Nesse modelo, substitua por isso:
<?php $parse_uri = explode('wp-content', $_SERVER['SCRIPT_FILENAME']); require_once($parse_uri[0] . 'wp-load.php'); ?>
É tiro e queda (pra mim foi ;)). Funciona tanto para o require quanto para o include. Só não deve funcionar se sua instalação tiver pastas com nome fora do padrão, principalmente a wp-content.
2 Comments
Olá, desculpe a ignorância, mas onde eu deveria implantar esse código? No próprio arquivo não encontro nada parecido para substituir.
Em outros locais encontrei uma possível solução mudando as permissões do arquivo para 0644 (normalmente ele é 0444), mas comigo não funcionou.
Obrigado desde já.
É só substituir. Em vez de usar o require_once com o caminho relativo, use o código do segundo bloco. Se bem que isso é muito antigo e não sei se ainda funciona.