2013-03-08 14 views
34

Jak mogę włączyć funkcje Wordpress do niestandardowego pliku .php?Jak dołączyć funkcje Wordpress do niestandardowego pliku .php?

W szczegółach: Mam katalog pod moim tematem (Constructor) nazwanych raportów. Zawierają one pliki .php, które generują raporty z danych z witryny z DOMPDF do pobrania. W tym celu chciałbym skorzystać z funkcji, które zapewnia silnik Wordpress, na przykład get_the_author_meta('user_firstname', $user_id). Jeśli ich użyję, otrzymam (oczywiście) następujący błąd:

Fatal error: Call to undefined function get_the_author_meta() in ROOT/public_html/wp-content/themes/constructor/reports/testreport.php on line 15

Doprowadziłem do przekonania, że ​​muszę dołączyć wp-blog-header.php. Używam require_once("../../../../wp-blog-header.php");. Dzięki temu pojawia się następujący błąd: 404.

No webpage was found for the web address: ROOT/wp-content/themes/constructor/reports/testreport.php

(punktów potrzebnych do prawidłowej ścieżce Gdybym bawić się z nim, mam Warning: require_once (../../../ wp-blog- header.php): nie udało się otworzyć strumienia ... Ścieżka musi być poprawna.)

Czy coś przeoczyłem? Dlaczego nie mogę dołączyć tego pliku wp? Jaka jest poprawna metoda uwzględniania funkcji wp?

Dzięki za pomoc, Sziro

Odpowiedz

62

Jesteś na dobrej drodze. Spróbuj to zamiast:

require_once("../../../../wp-load.php"); 
+1

Dziękuję, to jest rozwiązanie! – Sziro

+2

To jest dobre rozwiązanie, ale spowoduje to załadowanie całej strony wp we wszystkich zainstalowanych wtyczkach i motywach ... to naruszenie zasady Yagni http://pl.wikipedia.org/wiki/You_aren't_gonna_need_it – HMagdy

+2

To może być prawdą, jeśli był ładowany plik WEWNĄTRZ Wordpressa, ale jeśli czytasz oryginalne pytanie, pytał, jak załadować go z zewnętrznego pliku php. – seanbreeden

2
require_once(dirname(__FILE__) . '/options.php'); 

Jest to lepszy sposób, aby dołączyć plik w WordPress

+3

Nie pytał, jak dołączyć plik do Wordpressa. Chciał załadować Wordpress z zewnętrznego pliku PHP. Twoje rozwiązanie nie działa. – seanbreeden

+0

Jest tego świadomy, jestem pewien. Dodaje do dyskusji. Teraz zamierzam użyć tej metody + wp-load.php.;) –

11

tym bardziej profesjonalny sposób bez rzeczą kropki czy WordPress był korzeniem dokumentu:

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php'); 
+4

WordPress niekoniecznie musi znajdować się w katalogu głównym dokumentu. –

+0

Musisz także pobrać plik katalog_główny_dokumentu dla ukośników w przód –

0

Jeśli ktoś ma nowsze wersje PHP (ver> = 5.5.x), może również wypróbować poniższy kod w skrypcie głównym w samym katalogu strony wordpress:

<?php 
define("WP_ROOT", __DIR__); 
define("DS", DIRECTORY_SEPARATOR); 
require_once WP_ROOT . DS . "wp-load.php"; 

Albo

<?php 
define("WP_ROOT", __DIR__); 
define("DS", DIRECTORY_SEPARATOR); 
require_once WP_ROOT . DS . "wp-blog-header.php"; 

myślę, że to jest bardziej bezpośredni i czyste podejście i nie wymaga ręcznego dodawania ukośniki i zmieniając diretories przez ...

Mam nadzieję, że to komuś pomaga.

Powiązane problemy