Qual è il modo corretto di utilizzare le funzioni di WordPress al di fuori dei file di WordPress?


59

Ho letto 2 metodi per inizializzare la funzione di WordPress al di fuori dei file di WordPress in modo che possiamo usare queste funzioni su qualsiasi pagina o sito Web al di fuori del blog di WordPress.

Quale di questi 2 metodi è quello corretto? Quali sono i casi d'uso per ciascun metodo se entrambi sono corretti? Qual è la differenza tra l'utilizzo di un metodo o l'altro?

Metodo 1:

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

Metodo 2:

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

Quali funzioni WP stai cercando di usare "al di fuori di WP" e perché? Entrambi questi metodi caricheranno comunque l'ambiente WP (anche se senza il supporto del tema), quindi stai ancora invocando funzioni all'interno di WP.
EAMann,

Sto cercando di capire la differenza tra i 2 metodi. Quello che farò è integrare il tema wordpress con il mio script di supporto. quindi avremo bisogno dell'intestazione, del piè di pagina e del loop di wordpress oltre al supporto per widget e altri plugin
alhoseany

Dubito davvero che questo sia il modo in cui vuoi fare le cose ... ci sono soluzioni migliori rispetto al tentativo di avviare WordPress da solo.
EAMann,

Sono spalancato per suggerimenti, sto cercando il modo migliore per fare le cose? qual è il modo migliore per integrare il tema wordpress con un'applicazione Web esterna?
alhoseany

Risposte:


58

C'è poca differenza tra i file. Quando visualizzi una pagina WordPress, il primo file chiamato è index.php. Ed è essenzialmente il tuo "Metodo 1:"

define('WP_USE_THEMES', true);

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

Il file di intestazione del blog (che mette in coda il resto di WordPress) si carica wp-load.phpdirettamente e attiva WordPress stesso. Ecco la maggior parte di 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' );

}

Quindi la differenza tra i tuoi due metodi è ... ciò che è caricato.

Il metodo 1 è esattamente ciò che fa WordPress per caricarsi (ad eccezione della disattivazione dei temi). Quindi, se hai bisogno di tutto WordPress e vuoi lanciare tutti gli hook / azioni predefiniti, segui quel percorso.

Il metodo 2 è solo un ulteriore passo avanti. Carica tutto WordPress, ma non chiama wp()o invoca il caricatore di modelli (utilizzato dai temi). Il metodo 2 sarà un po 'più leggero, ma dovrebbe darti la stessa funzionalità.


3
C'è un diagramma o qualcosa che mappa tutti questi file? Ne ho visto uno molto tempo fa ma non riesco a trovarlo.
ninja08

17

Metodo 2 dalla tua domanda:

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

wp-load.phpè l'accesso a tutte le funzioni di WordPress, tutto qui. La prima riga dice a WordPress di caricare non i file dei temi; forse i file sono necessari per le tue esigenze, quindi rimuovere la linea.


1
cosa significa quella prima riga?
Sagive SEO

8
La prima riga dice a WordPress di non caricare tutte le sue funzionalità di supporto del tema. Fondamentalmente, carica meno file.
EAMann

La prima riga è necessaria solo per il primo metodo?
Mc

4

wp-blog-header.php allegherà uno stato di intestazione, restituirà un codice di stato http di 404

wp-load.php no

Utile notare quando si utilizza Ajax in quanto controlla il codice di stato http


2

A volte caricare le funzioni.php del tema può causare problemi. Stava rompendo l'html dell'altra mia pagina. Quindi è quello che ho fatto e risolto il mio problema:

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

0

@ ninja08

Possiamo usare l'estensione php xDebug per analizzare uno script.

basta abilitare ;xdebug.profiler_enable = 1il php.inifile rimuovendolo ;dalla prima riga e dopo aver riavviato il server apache ed eseguire il sito wordpress ... ora un file creato nella directory tmp del server xampp .. aprire questo file con l' applicazione WincachGrind .

ora puoi vedere una mappa della tua sceneggiatura

WincacheGrind Analizza Wordpress semplice


Avresti dovuto aggiungerlo nel commento sotto ninja08. questa è ora una risposta errata.
alhoseany

2
@alhoseany sì..i adesso ... ma non ho abbastanza reputazione ... e poi decido di farlo.
Mostafa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.