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.