Care este modalitatea corectă de a utiliza funcțiile WordPress în afara fișierelor WordPress?

28 mar. 2012, 00:16:25
Vizualizări: 110K
Voturi: 71

Am citit despre 2 metode de inițializare a funcțiilor WordPress în afara fișierelor WordPress, astfel încât să putem folosi aceste funcții pe orice pagină sau site web în afara blogului WordPress.

Care dintre aceste 2 metode este cea corectă? Care sunt cazurile de utilizare pentru fiecare metodă, dacă ambele sunt corecte? Care este diferența dintre utilizarea unei metode sau a celeilalte?

Metoda 1:

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

Metoda 2:

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

Ce funcții WP încerci să folosești "în afara WP" și de ce? Oricare dintre aceste metode va încărca totuși mediul WP (deși fără suport pentru teme), așa că tot apelezi funcții din interiorul WP.

EAMann EAMann
28 mar. 2012 00:41:56

Încerc să înțeleg diferența dintre cele 2 metode. Ceea ce voi face este să integrez tema WordPress cu scriptul meu de suport. Așa că voi avea nevoie de header-ul, footer-ul și loop-ul din WordPress, plus ceva suport pentru widget-uri și alte plugin-uri.

alhoseany alhoseany
28 mar. 2012 01:33:10

Mă îndoiesc serios că aceasta este calea pe care dorești să o urmezi... există soluții mai bune decât încercarea de a inițializa WordPress în sine.

EAMann EAMann
28 mar. 2012 01:57:44

Sunt deschis la sugestii, caut cea mai bună metodă de a face lucrurile. Care este cea mai bună modalitate de a integra o temă WordPress cu o aplicație web externă?

alhoseany alhoseany
28 mar. 2012 13:29:09

Metoda 2 a funcționat pentru mine în timp ce dezvoltam un plugin. Mulțumesc.

StealthTrails StealthTrails
1 iul. 2021 22:57:32

Sugerez editarea la require( $_SERVER['DOCUMENT_ROOT'] . '/wp-blog-header.php' );, care merge la root document pentru a încărca nucleul WordPress și evită ./././ (etc).

EdA EdA
14 aug. 2024 21:57:33
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 7
1
67

Diferența dintre fișiere este mică. Când vizualizați o pagină WordPress, primul fișier apelat este index.php. Acesta este, în esență, "Metoda 1:"

define('WP_USE_THEMES', true);

/** Încarcă mediul WordPress și șablonul */
require ('./wp-blog-header.php');

Fișierul antet al blogului (care încarcă restul WordPress) încarcă direct wp-load.php și pornește WordPress-ul în sine. Iată cea mai mare parte din 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' );

}

Deci diferența dintre cele două metode este... ceea ce este încărcat.

Metoda 1 este exact ceea ce face WordPress pentru a se încărca (cu excepția dezactivării temelor). Deci, dacă aveți nevoie de tot WordPress și doriți să declanșați toate acțiunile/cârlige implicite, alegeți această rută.

Metoda 2 este doar un pas mai departe în linie. Încarcă tot WordPress-ul, dar nu apelează wp() sau nu invocă încărcătorul de șabloane (folosit de teme). Metoda 2 va fi puțin mai ușoară, dar ar trebui să ofere aceleași funcționalități.

28 mar. 2012 01:57:02
Comentarii

Există vreo diagramă sau ceva care să mapeze toate aceste fișiere? Am văzut una cu mult timp în urmă, dar nu o mai găsesc.

ninja08 ninja08
12 iun. 2015 19:53:13
3
21

Metoda 2 din întrebarea ta:

<?php 
define( 'WP_USE_THEMES', false ); // Nu încărca funcționalitățile de suport pentru temă
require( './wp-load.php' );

wp-load.php reprezintă accesul la toate funcțiile WordPress, asta e tot. Prima linie instruiește WordPress să nu încarce fișierele temei; este posibil ca fișierele să fie necesare pentru cerințele tale, caz în care poți elimina linia.

28 mar. 2012 00:32:52
Comentarii

ce înseamnă de fapt prima linie?

Sagive Sagive
28 mar. 2012 01:35:46

Prima linie instruiește WordPress să nu încarce toată funcționalitatea de suport pentru teme. Practic, încarcă mai puține fișiere.

EAMann EAMann
28 mar. 2012 01:52:27

Prima linie este necesară doar pentru prima metodă?

mcont mcont
5 oct. 2014 16:46:33
0

Uneori încărcarea fișierului functions.php al temei poate provoca probleme. Acesta îmi strică HTML-ul altei pagini. Iată ce am făcut și am rezolvat problema:

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

wp-blog-header.php va atașa un status de header, va returna un cod de stare HTTP 404

wp-load.php nu va face acest lucru

Este util de reținut atunci când folosești AJAX, deoarece verifică codul de stare HTTP

11 apr. 2016 13:42:04
0

Nu trebuie să apelezi întreaga temă pentru a utiliza funcții, doar folosește locația pentru wp-load.php în directorul WordPress.

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

?>
7 mai 2020 11:45:48
2

@ninja08

Putem folosi extensia php xDebug pentru a analiza un script.

doar activează ;xdebug.profiler_enable = 1 în fișierul tău php.ini prin eliminarea ; de la începutul liniei și după aceasta repornește serverul apache și rulează site-ul tău WordPress... acum un fișier va fi creat în directorul tmp al serverului tău xampp... deschide acest fișier cu aplicația WincachGrind.

acum poți vedea o hartă a scriptului tău

WincacheGrind Analiză Simplă WordPress

14 dec. 2015 07:08:49
Comentarii

Trebuia să adaugi asta în comentariul de mai jos, ninja08. Acesta este acum un răspuns incorect.

alhoseany alhoseany
15 dec. 2015 09:26:43

@alhoseany da..știu... dar nu am suficiente puncte de reputație...așa că am decis să fac asta.

Mostafa Mostafa
15 dec. 2015 20:48:44
0

În cazul meu, './' nu a funcționat, dar această soluție merge perfect:

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

(Va trebui să mergi înapoi prin atâtea foldere câte sunt necesare, în funcție de locația folderului tău executabil)

4 apr. 2022 17:58:23