Jaki jest prawidłowy sposób korzystania z funkcji WordPress poza plikami WordPress?


59

Przeczytałem o 2 metodach inicjowania funkcji WordPress poza plikami WordPress, dzięki czemu możemy korzystać z tych funkcji na dowolnej stronie lub stronie internetowej poza blogiem WordPress.

Która z tych 2 metod jest poprawna? Jakie są przypadki użycia dla każdej metody, jeśli obie są poprawne? Jaki jest szacunek między zastosowaniem jednej lub drugiej metody?

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

Z których funkcji WP próbujesz korzystać „poza WP” i dlaczego? Każda z tych metod będzie nadal ładować środowisko WP (choć bez obsługi motywów), więc nadal wywołujesz funkcje wewnątrz WP.
— EAMann

Próbuję zrozumieć różnicę między 2 metodami. To, co zrobię, to zintegrowanie motywu Wordpress z moim skryptem wsparcia. więc potrzebuję nagłówka, stopki i pętli z wordpressa oraz wsparcia dla widżetów i innych wtyczek
— alhoseany

Naprawdę wątpię, że tak właśnie chcesz robić rzeczy ... istnieją lepsze rozwiązania niż próba uruchomienia samego WordPressa.
— EAMann

Jestem otwarty na sugestie, szukam najlepszego sposobu na robienie rzeczy? jaki jest najlepszy sposób na integrację motywu wordpress z zewnętrzną aplikacją internetową?
— alhoseany

Odpowiedzi:


58

Różnica między plikami jest niewielka. Podczas przeglądania strony WordPress pierwszy wywoływany plik to index.php. I jest to w zasadzie Twoja „Metoda 1”:

define('WP_USE_THEMES', true);

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

Plik nagłówka blogu (który ustawia w kolejce resztę WordPressa) ładuje się wp-load.phpbezpośrednio i uruchamia sam WordPress. Oto większość 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' );

}

Różnica między twoimi dwiema metodami polega na ... tym, co jest załadowane.

Metoda 1 jest dokładnie tym, co robi WordPress, aby się załadować (z wyjątkiem wyłączania motywów). Więc jeśli potrzebujesz całego WordPressa i chcesz odpalić wszystkie domyślne hooki / akcje, idź tą drogą.

Metoda 2 to tylko kolejny krok w dół. Ładuje cały WordPress, ale nie wywołuje wp()ani nie wywołuje modułu ładującego szablony (używane przez motywy). Metoda 2 będzie trochę lżejsza, ale powinna zapewnić tę samą funkcjonalność.


3
Czy istnieje schemat lub coś, co odwzorowuje wszystkie te pliki? Widziałem już dawno, ale nie mogę go znaleźć.
— ninja08

17

Metoda 2 z twojego pytania:

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

wp-load.phpjest dostęp do wszystkich funkcji WordPress, to wszystko. Pierwszy wiersz mówi WordPressowi, aby nie ładował plików motywów; może pliki są niezbędne do twoich wymagań, a następnie usuń wiersz.


1
co w ogóle oznacza ta pierwsza linia?
— Sagive SEO

8
Pierwszy wiersz mówi WordPressowi, aby nie ładował wszystkich funkcji obsługi motywów. Zasadniczo ładuj mniej plików.
— EAMann

Czy pierwszy wiersz jest potrzebny tylko dla pierwszej metody?
— mcont

4

wp-blog-header.php dołącza status nagłówka, zwraca kod stanu HTTP 404

wp-load.php nie będzie

Warto zauważyć, kiedy używasz ajax, ponieważ sprawdza kod stanu http


2

Czasami ładowanie pliku functions.php kompozycji może powodować problemy. Łamał html mojej drugiej strony. Tak właśnie zrobiłem i rozwiązałem mój problem:

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

0

@ ninja08

Możemy użyć rozszerzenia php xDebug do analizy skryptu.

po prostu włącz ;xdebug.profiler_enable = 1w swoim php.inipliku, usuwając ;z pierwszego wiersza, a następnie ponownie uruchom serwer Apache i uruchom witrynę Wordpress ... teraz plik utworzony w katalogu tmp serwera xampp .. otwórz ten plik za pomocą aplikacji WincachGrind .

teraz możesz zobaczyć mapę swojego skryptu

WincacheGrind Prosta analiza Wordpress


Powinieneś dodać to w komentarzu poniżej ninja08. to jest teraz niepoprawna odpowiedź.
— alhoseany

2
@alhoseany tak .. teraz to ... ale nie mam wystarczającej reputacji ... a potem decyduję się to zrobić.
— Mostafa,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.