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

28 mar 2012, 00:16:25
Visualizzazioni: 110K
Voti: 71

Ho letto di 2 metodi per inizializzare le funzioni WordPress al di fuori dei file WordPress in modo da poter utilizzare queste funzioni su qualsiasi pagina o sito web esterno al blog 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 rispetto all'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');
?>
6
Commenti

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

EAMann EAMann
28 mar 2012 00:41:56

Sto cercando di capire la differenza tra i 2 metodi. Quello che farò è integrare il tema wordpress con il mio script di supporto. Avrò quindi bisogno dell'header, del footer e del loop di wordpress più un po' di supporto per widget e altri plugin

alhoseany alhoseany
28 mar 2012 01:33:10

Dubito fortemente che questo sia il modo in cui vuoi procedere... esistono soluzioni migliori rispetto al tentativo di fare il bootstrap di WordPress stesso.

EAMann EAMann
28 mar 2012 01:57:44

Sono completamente aperto a suggerimenti, sto cercando il modo migliore per fare le cose. Qual è il modo migliore per integrare un tema WordPress con un'applicazione web esterna?

alhoseany alhoseany
28 mar 2012 13:29:09

Il Metodo 2 ha funzionato per me durante lo sviluppo di un plugin. Grazie.

StealthTrails StealthTrails
1 lug 2021 22:57:32

Suggerisco di modificare in require( $_SERVER['DOCUMENT_ROOT'] . '/wp-blog-header.php' );, che va alla root del documento per caricare il core di WP, ed evita ./././ (ecc.).

EdA EdA
14 ago 2024 21:57:33
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 7
1
67

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);

/** Carica l'ambiente WordPress e il template */
require ('./wp-blog-header.php');

Il file header del blog (che mette in coda il resto di WordPress) carica direttamente wp-load.php e avvia 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 è... cosa viene caricato.

Il Metodo 1 è esattamente ciò che fa WordPress per caricare se stesso (con l'eccezione di disattivare i temi). Quindi se hai bisogno di tutto WordPress e vuoi attivare tutti gli hook/azioni predefiniti, scegli questa strada.

Il Metodo 2 è semplicemente un ulteriore passo avanti. Carica tutto WordPress, ma non chiama wp() né invoca il caricatore dei template (utilizzato dai temi). Il Metodo 2 sarà un po' più leggero, ma dovrebbe fornire la stessa funzionalità.

28 mar 2012 01:57:02
Commenti

Esiste un diagramma o qualcosa che mappa tutti questi file? Ne ho visto uno tempo fa ma non riesco a trovarlo.

ninja08 ninja08
12 giu 2015 19:53:13
3
21

Metodo 2 dalla tua domanda:

<?php 
define( 'WP_USE_THEMES', false ); // Non caricare le funzionalità di supporto del tema
require( './wp-load.php' );

wp-load.php è l'accesso a tutte le funzioni di WordPress, tutto qui. La prima riga dice a WordPress di non caricare i file del Tema; forse i file sono necessari per i tuoi requisiti, quindi rimuovi la riga.

28 mar 2012 00:32:52
Commenti

cosa significa anche quella prima riga?

Sagive Sagive
28 mar 2012 01:35:46

La prima riga dice a WordPress di non caricare tutta la sua funzionalità di supporto ai temi. Fondamentalmente, carica meno file.

EAMann EAMann
28 mar 2012 01:52:27

La prima riga è necessaria solo per il primo metodo?

mcont mcont
5 ott 2014 16:46:33
0

A volte il caricamento del file functions.php del tema può causare qualche problema. Stava rompendo l'html della mia altra pagina. Ecco cosa ho fatto per risolvere il problema:

define('STYLESHEETPATH', '');
define('TEMPLATEPATH', '');
require_once(RAIZ_WORDPRESS."/wp-load.php");
27 ott 2015 13:19:27
0

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

wp-load.php non lo farà

Importante da notare quando si utilizza ajax poiché verifica il codice di stato HTTP

11 apr 2016 13:42:04
0

Non è necessario chiamare l'intero tema per utilizzare le funzioni, basta utilizzare il percorso del file wp-load.php nella directory di WordPress.

<?php
require($_SERVER['DOCUMENT_ROOT'] . '/wordpress/wp-load.php');

?>
7 mag 2020 11:45:48
2

@ninja08

Possiamo utilizzare l'estensione xDebug per PHP per analizzare uno script.

Basta abilitare ;xdebug.profiler_enable = 1 nel tuo file php.ini rimuovendo il ; all'inizio della riga e dopo questo riavvia il server apache e esegui il tuo sito wordpress...ora verrà creato un file nella directory tmp del tuo server xampp..apri questo file con l'applicazione WincachGrind.

Ora puoi visualizzare una mappa del tuo script

Analisi semplice di Wordpress con WincacheGrind

14 dic 2015 07:08:49
Commenti

Avresti dovuto aggiungere questo nel commento qui sotto ninja08. questa ora è una risposta non corretta.

alhoseany alhoseany
15 dic 2015 09:26:43

@alhoseany sì..lo so... ma non ho abbastanza reputazione...e quindi ho deciso di fare così.

Mostafa Mostafa
15 dic 2015 20:48:44
0

Nel mio caso './' non ha funzionato, ma questo funziona perfettamente:

require('../../../wp-load.php');

(Dovrai tornare indietro di tante cartelle quante sono necessarie a seconda di dove si trova la tua cartella eseguibile)

4 apr 2022 17:58:23