Każdy użytkownik połączony z Internetem posiada unikalny adres IP. Niektórzy właściciele stron WordPress chcą mieć stały wgląd w te dane, dlatego szukają sposobu jak zapisać adres IP użytkownika w panelu /wp-admin/ (w zakładce 'Użytkownicy’).
Może to być związane z typem strony, którą prowadzimy, lub wymogiem klienta, dla którego zapisywanie IP będzie pomocne w dalszym rozwoju biznesu. Przykładem może być potrzeba przechowywania adresu ze względów bezpieczeństwa, oferowanie płatnych planów członkowskich, produktów wirtualnych itp.
Adres IP użytkowników na WordPressie
Ten post został napisany we współpracy z firmą JCHost.pl. Korektę kodu wykonał Krzysztof z wpmagus.pl. W artykule opiszemy sposób, jak dodać funkcjonalność przechowywania adresu IP na stronie WordPress.
Najpierw zapiszemy IP w bazie, by później dodać dodatkową kolumnę z adresem w zakładce „Użytkownicy” w panelu /wp-admin/.
Wszystkie poniższe funkcje dodajemy do motywu, z którego korzystamy, w pliku functions.php.
Krok 1: Zapisanie adresu IP w bazie danych
Pierwszą rzeczą, by móc wyświetlić adres IP każdego z użytkowników, jest zapisanie go w bazie danych. Możemy to zrobić za pomocą prostej funkcji ‘wyciągnięcia’ adresu, która jest powtarzana za każdym razem, gdy użytkownik się loguje:
function save_users_ip ( $login, $user ) { update_user_meta( $user->ID, 'user_ip', $_SERVER['REMOTE_ADDR'] ); } add_action( 'wp_login', 'save_users_ip', 10, 2 );
Krok 2: Dodanie nowej kolumny w zakładce „Użytkownicy”
Następną rzeczą będzie stworzenie dodatkowej kolumny w panelu admina na liście zarejestrowanych użytkowników. Możemy to zrobić z pomocą tej funkcji:
function add_users_ip_column($column) { return array_merge( $column, array('user_ip' => __('Adres IP')) );} add_filter('manage_users_columns','add_users_ip_column');
Krok 3: Pobranie i wyświetlenie adresu IP
Teraz pozostało nam już tylko wyciągnąć zapisany wcześniej adres IP każdego z użytkowników oraz wyświetlić go w nowej kolumnie. Wystarczy, że dodamy następującą funkcję:
function show_users_ip( $output, $column_name, $user_id ) { if ( 'user_ip' === $column_name ) { $user = get_userdata( $user_id ); return esc_html($user->user_ip); } return $output; } add_filter( 'manage_users_custom_column', 'show_users_ip', 10, 3 );
Krok 4: Sprawdzenie poprawności działania
Ostatnią rzeczą będzie oczywiście test praktyczny. Aby sprawdzić, czy adres IP jest zapisywany i wyświetlany poprawnie, wylogujmy się z panelu admina i zalogujmy ponownie.
Następnie przejdźmy do zakładki „Użytkownicy” i sprawdźmy,czy w nowej kolumnie wyświetla się nasz adres IP. Powinno to wyglądać tak:
Końcowe przemyślenia
Jak widać, zapisanie adresu IP użytkownika w bazie, a następnie jego wyświetlenie w panelu admina WordPress, wcale nie jest takie trudne. Wystarczą 3 krótkie funkcje i voila!
Warto pamiętać, że bezpieczeństwo jest najważniejsze.Funkcje związane z wrażliwymi danymi użytkowników nie powinny być stosowane w niezabezpieczonym środowisku. Jeśli chcesz połączyć niesamowitą szybkość strony z kilkupoziomową ochroną, wybierz sprawdzony hosting WordPress – usługę JCHost.pl, współautora tego artykułu.
Komentarze
5 odpowiedzi na „Jak zapisać i wyświetlić adres IP użytkownika WordPress”
Edycja: zmieniłem ostatni blok kodu, bo nie działał w oryginalnym zapisie autora wpisu
Zacząłem pisać komentarz, ale wyszło tego tyle, że powstał artykuł…. O tym, jak pisząc kilka linijek kodu można zaszkodzić stronie i klientowi… Zapraszam do lektury:
https://wpmagus.pl/artykuly/przechowywanie-adresu-ip-uzytkownikow-i-jak-tego-nie-robic/
Panie Krzysztofie, dziękuję za korektę kodu! Poprawiłem go i dodałem o Panu wzmiankę w poście.
Szkoda, że się sprzedałeś. Nie dość, że jak sam piszesz kod nie działa i musisz po nichg poprawiać, pokazuje tylko jak słaby to jest hosting. Zawsze miałem Ciebie za mądrego faceta i chętnie czytałem bloga. Po tym wpisie spadłeś poziomem na blogi ala Ola czy Kasia. Rekalma i zero merytotyki a dodatkowo błędy.
A dwa pisanie o „dobrej pomocy technicznej” jchost jest śmieszne – skoro nawet kodu poprawnie nie napiszą.
0.218 s – to jest na czystym wp i na pustym u nich serwerze. Wynosiłem klienta od nich bo poza marketingiem ostatnio nachalnym – to nic tam nie ma,.
Sprzedania się tu na pewno nie ma: nie dostalem od Jchost żądnych pieniedzy. Tzn teraz dostalem, bo zamiescili reklame banerowa. Ale do momentu publikacji wpisu nie było żadnej rozmowy z zadnej strony o reklamie. Probowano mnie namowic abym dolaczyl do ich programu partnerskiego i tego typu linki wkleil w tresc, ale sie nie zgodzilem (bo nie lubie programow parterskich z zalozenia).
Na dev.wpzlecenia publikowac moze kazdy i wg mnie autor sam ponosi odpowiedzialnosc za poziom i tresc wpisu.
Jesli chcesz wyzszego poziomu, zapraszam do kontaktu i opublikowania czegos :)