Mój style.php
plik wygląda tak.
<?php header('Content-Type: text/css');?>
#div{
background:<?php echo get_option('bgcolor');?>;
}
To nie działa, ale kiedy to robię, działa.
<?php header('Content-Type: text/css');?>
#div{
background: <?php echo 'blue';?>;
}
Jaki byłby problem?
To jest mainfile.php
<?php
function test(){
global get_option('bgcolor');?>
<input type="text" id="bgcolor" name="post_popup_settings[bgcolor]" value="<?php echo get_option('bgcolor');?> " />
<?php
}
add_action('admin_head','test');
To jest właściwie w sekcji administratora.
style.php
. Jeśli plik stylu nie jest wywoływany przez WordPress, funkcja WordPress nie jest dostępna.Odpowiedzi:
Funkcje WordPress są dostępne tylko po załadowaniu WordPress. Jeśli zadzwonisz
style.php
bezpośrednio, nie możesz użyć funkcji WordPress.Jednym prostym sposobem załadowania WordPressa do arkusza stylów opartego na PHP jest dodanie punktu końcowego do WordPress: niestandardowego, zarezerwowanego adresu URL, w którym ładujesz plik szablonu.
Aby się tam dostać, musisz:
Zarejestrować się na końcowy
'init'
zadd_rewrite_endpoint()
. Nazwijmy to'phpstyle'
.Podłącz się
'request'
i upewnij się, że zmienna punktu końcowego'phpstyle'
nie jest pusta, jeśli jest ustawiona. Przeczytaj doskonały A (głównie) kompletny przewodnik Christophera Davisa po WordPress Rewrite API, aby zrozumieć, co się tutaj dzieje.Podłącz
'template_redirect'
i dostarcz plik zamiast domyślnego pliku szablonuindex.php
.Krótko mówiąc, połączyłem wszystkie trzy proste kroki w jednej funkcji w następującej wtyczce demonstracyjnej.
Wtyczka PHP Style
Zainstaluj wtyczkę, odwiedź
wp-admin/options-permalink.php
raz, aby odświeżyć reguły przepisywania i dodajstyle.php
do swojego motywu.Próba
style.php
Teraz odwiedź
yourdomain/phpstyle/
. Wydajność:Ale jeśli przejdziesz do
yourdomain/phpstyle/blue/
wyjścia to:Możesz więc użyć punktu końcowego do dostarczania różnych arkuszy stylów z jednym plikiem, w zależności od wartości
get_query_var( 'phpstyle' )
.Zastrzeżenie
Spowolni to działanie Twojej witryny. WordPress musi być ładowany dwa razy dla każdej wizyty. Nie rób tego bez agresywnego buforowania.
źródło
get_query_var( 'phpstyle' ) AND ! defined( 'SHORTINIT' ) AND define( 'SHORTINIT', true )
aby przyspieszyć ... a jeśli tak, wszystkie potrzebne funkcje są dostępne ...Możesz to zrobić, ładując dane wyjściowe za pośrednictwem
admin-ajax.php
, ale lepszym rozwiązaniem jest użycieSHORTINIT
stałej WordPress , abyś mógł załadować tylko potrzebne funkcje, ale musisz to znaleźć i załadowaćwp-load.php
:W tym momencie musisz upewnić się, że dołączasz wszelkie inne
wp-includes
pliki potrzebne do uzyskania opcji motywu - które będą się różnić w zależności od sposobu zapisywania, a tym samym dostępu do nich. (Prawdopodobnie będziesz musiał dodać więcej do tej listy, aby nie pojawiały się błędy krytyczne - ale w miarę upływu czasu błędy krytyczne wskażą, które pliki należy dodać.) Np.Następnie, gdy masz już wszystkie potrzebne funkcje, możesz wygenerować CSS za pomocą tych funkcji ... np.
Następnie możesz kolejkować plik jak zwykle, na przykład:
źródło
../../
nawp-load.php
ścieżce, funkcję daną znajdzie je dla Ciebie, jak to ... ale jak powiedziałem trzeba zrobić, aby znaleźć i to niezależnie plików ty potrzebować które mają funkcje, którego używasz, np.get_background_image
jest wtheme.php
etc ... gdy dodajesz do CSS, możesz potrzebować więcej, więc musisz nauczyć się, jak je znaleźć, aby korzystać z tej metody skutecznie i niezawodnie.