Tworzę witrynę na serwerze, do której klient ma również dostęp, a to, co chciałbym zrobić, to pokazywanie WP_DEBUG
tylko administratorom. Odwoływanie artykuł Yoast jest na odwrót to:
if ( isset($_GET['debug']) && $_GET['debug'] == 'true')
define('WP_DEBUG', true);
wyświetla się WP_DEBUG
tylko w przypadku ?debug=true
dołączonych do nich adresów URL , nphttp://domain.com/?debug=true
Myślałem, że pasek debugowania może domyślnie przechowywać niektóre z tych informacji (niezależnie od tego, czy WP_DEBUG
jest włączony), ale myślałem o szaleństwie, ponieważ nie sądzę, żeby tak było.
Pomyślałem, że przydałby się bieżący użytkownik (posiadający taką manage_options
możliwość, a następnie uruchamiający linki add_query_arg()
:
function zs_admin_debug() {
if (!current_user_can('manage_options')) {
add_query_arg('debug','true');
}
}
ale nie jestem pewien - czy jest jakiś haczyk, którego mogę użyć do wykonania wszystkich linków na stronie? W ten sposób administratorzy zawsze widzą debugowanie, które moim zdaniem byłoby bardzo przydatne. Dzięki jak zawsze za pomoc!
if ( isset( $_GET['bug'] ) )
więc odwiedzam błąd link / ?, aby zobaczyć debugowanie :)Odpowiedzi:
Nie sądzę, że istnieje uniwersalny hak URL. Jest wiele haczyków i mogłem to przegapić, ale nie sądzę, żeby istniała jedna. Możesz przejrzeć haczyki na adambrown.info . Istnieje wiele haczyków URL, ale nie uniwersalnych.
Jeśli mogę zasugerować inne rozwiązanie: zaloguj błędy do pliku.
Ten kod pochodzi bezpośrednio z Kodeksu dla pliku wp-config.php . Jeśli to zrobisz, nie będziesz musiał się martwić o żonglerkę
$_GET
lub ustalenie, kto jest, a kto nie jest administratorem.Edytować:
Zapomniałem jednego możliwego rozwiązania. Możesz to zrobić za pomocą Javascript. Krótki skrypt może dołączyć parametr do wszystkich adresów URL na stronie, a skrypt można łatwo załadować tylko dla administratorów.
Nadal sugerowałbym rozwiązanie „log”, ponieważ błędy dla wszystkich są rejestrowane. Jeśli twoi ludzie są jak moi i wysyłają „raporty” o błędach, takie jak „ hej, witryna jest zepsuta, kiedy wypełnisz ten formularz ”, docenisz dziennik. :)
źródło
Mimo że moje pierwsze podejście dotyczyło kosza na śmieci, a odpowiedź s_ha_dums jest czysta i prawdopodobnie najlepsza, można to zrobić, ale proponuję jeszcze jeden scenariusz działania:
Poniżej ustawiono plik cookie, który jest ważny przez następne 24 godziny (86400 sekund), gdy administrator loguje się do systemu. W wp-config.php stała
WP_DEBUG
jest warunkowo zdefiniowana w zależności od obecności i wartości wspomnianego pliku cookie.Zastrzeżenie:
WP_DEBUG
zostanie następnie ustawione natrue
dla wszystkich logujących się z tej samej przeglądarki na tym samym komputerze tego samego dnia.w functions.php (lub jako wtyczka):
Zobacz: Codex> Action Action> wp_login
w wp-config.php :
źródło
init
jest za późno, aby przynieść jakikolwiek efekt. Próbowałem również tego i to nie zadziałało.init
tym jest wiele rzeczy, które się interesują.Nie odpowiada dokładnie na twoje pytanie, ale z własnego doświadczenia wynika, że lepiej włączyć tryb debugowania, dopasowując adres IP zamiast adresu URL.
Wymaga to modyfikacji łączy i rozwiązuje problem identyfikacji administratora, zanim WP załaduje wymaganą funkcjonalność użytkownika.
źródło
echo $_SERVER['REMOTE_ADDR']
plony::1
, które można oczekiwać na localhost? To szczerze brzmi jak osobny plik dziennika i w ten sposób (ponieważ domowe adresy IP wydają się cały czas zmieniać) może być dobrym pomysłem.::1
to tylko wersja IPv6127.0.0.1
. Dynamiczne IP sprawia, że jest mniej wygodne, ale i tak traktuję to tylko jako tymczasową technikę rozwiązywania problemów na żywo. Nie zastępuje poprawnej lokalnej konfiguracji debugowania.Jest to również możliwa sztuczka, ale musisz to umieścić w swoim,
wp-config.php
ponieważWP_DEBUG
jest tam zdefiniowane:Dodaj
?debugsecret=debugsecret
do adresu URL strony, którą chcesz debugować.źródło
Jeśli masz statyczny adres IP, możesz to zrobić:
Źródło: DEBUGGING WORDPRESS - JAK KORZYSTAĆ Z WP_DEBUG NA STRONIE PRODUKCYJNEJ
źródło