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.