Przejście do Nowego Wpisu po zalogowaniu do WordPressa
Opublikowano 30 października 2013
Kategorie: Administracja, Optymalizacja, Tworzenie stron, WordPress, Wszystkie
0
Jeśli piszesz na swoim blogu regularnie, to może przyzwyczaiłeś się, że Kokpit nie jest w sumie zbytnio przydatny. Komentarze moderuje się zazwyczaj e-mailowo, "Szybki wpis" jest zbyt ubogi, by go używać w większości przypadków, a pozostałe opcje to raczej bajery.
Reasumując, lepiej by było po zalogowaniu się automatycznie być przeniesionym do podstrony z najczęściej wykonywaną czynnością - czy to jest dodawanie nowego wpisu, czy strony, czy moderowanie komentarzy.
Jedno kliknięcie plus szukanie opcji w menu WordPressa robi różnicę, jeśli powtarza się tą procedurę po 2 razy dziennie każdego dnia: nawet, jeśli każdy taki proces zajmie 3 sekundy, w skali roku traci się na to 36 minut.
Dzisiaj rozwiążemy ten problem, dostając 36 minut rocznie w nagrodę :)
Przekierowanie po zalogowaniu do WordPressa
Swój kod oparłem o rozwiązanie Brada Williamsa (on jest autorem pierwszej funkcji, ja - drugiej).
W pliku functions.php używanego przez nas szablonu dopisujemy przed końcowym znacznikiem ?>:
$redirect_from_dashboard_to = admin_url('post-new.php'); add_action('login_form', 'redirect_after_login'); function redirect_after_login() { global $redirect_to, $redirect_from_dashboard_to; if (!isset($_GET['redirect_to'])) { $redirect_to = $redirect_from_dashboard_to; } } add_action( 'load-index.php', 'redirect_from_dashboard', 1, 0 ); function redirect_from_dashboard(){ global $redirect_from_dashboard_to; $ref=wp_get_referer(); if($ref){ $parsedRef=parse_url($ref); $parsedSiteUrl=get_option('siteurl'); if($parsedRef['host'] == $parsedSiteUrl['host']){ wp_redirect($redirect_from_dashboard_to); } }else{ wp_redirect($redirect_from_dashboard_to); } }
Po zalogowaniu zostaniemy przeniesieni na podstronę tworzenia nowego Wpisu. Zawarty w pierwszej linijce kod admin_url('post-new.php') wstawia adres do panelu administracyjnego Twojego bloga (zazwyczaj http://jakastam-twoja-domena.pl/wp-admin/), a dalej dodajemy tylko standardowy adres podstrony z tworzeniem nowego wpisu. Oczywiście po znaku równości można podać dowolny adres do przekierowania, ale ten kod jest uniwersalny niezależnie od adresu Twojej strony i adresu panelu administracyjnego właśnie dzięki zastosowaniu admin_url('post-new.php').
Pierwsza funkcja odpowiada za to, że przekierowanie będzie działać tylko bezpośrednio po zalogowaniu i tylko, jeśli nie mamy zostać przekierowani na jakiś inny adres (taka sytuacja występuje np. po kliknięciu "Edytuj" na pasku administracyjnym WordPressa podczas przeglądania treści swojej strony).
Druga funkcja sprawdza i przekierowuje ze strony "Kokpit" (i tylko z niej) na tą samą podstronę określoną w pierwszej linijce tylko w dwóch przypadkach:
- jeśli nie odwiedziłeś wcześniej żadnej innej witryny (otworzyłeś nową Kartę w przeglądarce i udałeś się do panelu administracyjnego swojego bloga z pominięciem logowania),
- jeśli strona odwiedzona bezpośrednio przed przejściem do "Kokpitu" nie była podstroną w Twoim panelu administracyjnym, tylko jakąś inną.
W praktyce więc druga funkcja zapewnia, że zobaczymy Kokpit tylko, jeśli będziemy w panelu WordPressa i klikniemy na link do niego, a we wszystkich innych przypadkach (np. przy otworzeniu bezpośrednio adresu http://jakastam-twoja-domena.pl/wp-admin/) zostaniemy przekierowani na podstronę z pierwszej linijki kodu.
Jeśli chcesz przekierowywać nie wszystkich użytkowników, a tylko niektórych lub ich grupy, użyj wtyczki Peter's Login Redirect.