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');
?>
php
wp-load.php
wp-blog-header.php
alhoseany
źródło
źródło
Odpowiedzi:
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”:Plik nagłówka blogu (który ustawia w kolejce resztę WordPressa) ładuje się
wp-load.php
bezpośrednio i uruchamia sam WordPress. Oto większośćwp-blog-header.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ść.źródło
Metoda 2 z twojego pytania:
wp-load.php
jest 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.źródło
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
źródło
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:
źródło
@ ninja08
Możemy użyć rozszerzenia php xDebug do analizy skryptu.
po prostu włącz
;xdebug.profiler_enable = 1
w swoimphp.ini
pliku, 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
źródło