Soluções

Como incluir o wp-load.php do WordPress sem erro “failed to open stream”

Anúncios Google

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.

Author

Fundador do Tutoriart em 2010, é ex-instrutor de Photoshop, design web e gráfico. Em quase uma década de redação online, tem cerca de 1500 artigos publicados. Gerencia também o Memória BIT.

2 Comments

  1. 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.

Write A Comment

Pin