Qual é a maneira correta de usar as funções do WordPress fora dos arquivos do WordPress?

59

Eu li cerca de 2 métodos para inicializar a função do WordPress fora dos arquivos do WordPress, para que possamos usar essas funções em qualquer página ou site fora do blog do WordPress.

Qual desses 2 métodos é o correto? Quais são os casos de uso de cada método, se ambos estiverem corretos? Qual é a deferência entre usar um método ou outro?

Método 1:

<?php 
    define('WP_USE_THEMES', false);
    require('./wp-blog-header.php');
?>

Método 2:

<?php 
    define('WP_USE_THEMES', false);
    require('./wp-load.php');
?>
alhoseany
fonte
Quais funções do WP você está tentando usar "fora do WP" e por quê? Como um desses métodos ainda carregará o ambiente WP (embora sem suporte ao tema), você ainda estará invocando funções dentro do WP.
EAMann
Estou tentando entender a diferença entre os 2 métodos. O que farei é integrar o tema wordpress ao meu script de suporte. por isso vai precisar do cabeçalho, rodapé e o loop do wordpress além de algum suporte para widgets e outros plugins
alhoseany
Eu realmente duvido que seja dessa maneira que você deseja fazer as coisas ... existem soluções melhores do que tentar inicializar o próprio WordPress.
EAMann
Estou aberto a sugestões, estou procurando a melhor maneira de fazer as coisas? qual é a melhor maneira de integrar o tema wordpress com aplicativos da web externos?
alhoseany

Respostas:

58

Há pouca diferença entre os arquivos. Quando você visualiza uma página do WordPress, o primeiro arquivo chamado é index.php. E é, essencialmente, o seu "Método 1:"

define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require ('./wp-blog-header.php');

O arquivo de cabeçalho do blog (que enfileira o restante do WordPress) é carregado wp-load.phpdiretamente e aciona o próprio WordPress. Aqui está a maioria dos wp-blog-header.php:

if ( !isset($wp_did_header) ) {

    $wp_did_header = true;

    require_once( dirname(__FILE__) . '/wp-load.php' );

    wp();

    require_once( ABSPATH . WPINC . '/template-loader.php' );

}

Então a diferença entre seus dois métodos é ... o que está carregado.

O método 1 é exatamente o que o WordPress faz para se carregar (com a exceção de desativar os temas). Portanto, se você precisa de todo o WordPress e deseja disparar todos os ganchos / ações padrão, siga essa rota.

O método 2 é apenas mais um passo abaixo da linha. Ele carrega todo o WordPress, mas não chama wp()ou invoca o carregador de modelos (usado pelos temas). O método 2 será um pouco mais leve, mas deve oferecer a mesma funcionalidade.

EAMann
fonte
3
Existe um diagrama ou algo que mapeia todos esses arquivos? Eu vi um há muito tempo, mas não consigo encontrá-lo.
Ninja08
17

Método 2 da sua pergunta:

<?php 
define( 'WP_USE_THEMES', false ); // Don't load theme support functionality
require( './wp-load.php' );

wp-load.phpé o acesso a todas as funções do WordPress, só isso. A primeira linha diz ao WordPress para carregar não os arquivos do tema; talvez os arquivos sejam necessários para suas necessidades e remova a linha.

bueltge
fonte
11
o que essa primeira linha significa?
Sagive SEO 27/03
8
A primeira linha diz ao WordPress para não carregar toda a funcionalidade de suporte ao tema. Basicamente, carregue menos arquivos.
EAMann
A primeira linha é necessária apenas para o primeiro método?
Mcont #
4

wp-blog-header.php anexará um status de cabeçalho, retornará um código de status http 404

O wp-load.php não

Útil observar ao usar o ajax, pois verifica o código de status http

RayLau135
fonte
2

Às vezes, carregar o functions.php do tema pode causar alguns problemas. Estava quebrando o html da minha outra página. Então foi isso que fiz e resolvi meu problema:

define('STYLESHEETPATH', '');
define('TEMPLATEPATH', '');
require_once(RAIZ_WORDPRESS."/wp-load.php");
Wellington Lorindo
fonte
0

@ ninja08

Podemos usar a extensão php xDebug para analisar um script.

basta ativar o ;xdebug.profiler_enable = 1seu php.iniarquivo removendo o ;primeiro da linha e após a reinicialização do servidor apache e execute o seu site wordpress ... agora um arquivo criado no diretório tmp do seu servidor xampp .. abra esse arquivo com o aplicativo WincachGrind .

agora você pode ver um mapa do seu script

WincacheGrind - Análise Simples de Wordpress

Mostafa
fonte
Você deveria ter adicionado isso no comentário abaixo ninja08. agora é uma resposta incorreta.
alhoseany
2
@alhoseany yes..i agora ... mas eu não tenho reputação suficiente ... e então eu decido fazer isso.
Mostafa