Witam,
Jestem mocno początkującym programistą. Teraz w celach nauki piszę na własne potrzeby prostą wtyczkę. Działanie jest proste. Wtyczka pozwala ustawić przekierowanie dla użytkownika po zalogowaniu lub wylogowaniu na wskazany adres np. Stronę Główną. Może w przyszłości też komuś się przyda.
Do sedna. Ten kod działa i wtyczka robi swoją robotę:
<?php
/*
Plugin Name: Redirect WP-Login
Plugin URI: http://twoja-domena.pl
Description: Wtyczka pozwala ustawić przekierowanie dla użytkownika po zalogowaniu lub wylogowaniu na wskazany adres np. Stronę Główną.
Version: 0.1
Author:
Author URI:
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
// filtr dla logowania
add_filter('wp_login', 'login_redirect');
function login_redirect() {
wp_redirect('http://twoja-domena.pl');
exit();
}
// filtr dla wylogowania
add_filter('wp_logout', 'logout_redirect');
function logout_redirect() {
wp_redirect('http://twoja-domena.pl');
exit();
}
Teraz chcę rozbudować wtyczkę o podstawową opcję konfiguracji. Chce dodać Podmenu o nazwie Redirect WP-Login do Ustawień w Panelu Administracyjnym. Następnie w opcjach wtyczki dodać dwa pola na wpisanie adresu http dla (po zalogowaniu) i (po wylogowaniu) oraz możliwość zmian tych adresów w każdej chwili. Jednak błąd pojawił sie podczas testu, gdy chciałem sprawdzić czy kod dodający opcje do menu w panelu administracyjnym działa.
Treść błędu:
Wtyczka nie mogła zostać włączona, ponieważ spowodowała wystąpienie krytycznego błędu.
Fatal error: Cannot redeclare redirect_wplogin_options() (previously declared in /domains/muverbo.pl/public_html/workspace/demo/wp-content/plugins/redirect-wplogin/redirect-wplogin.php:32) in /domains/muverbo.pl/public_html/workspace/demo/wp-content/plugins/redirect-wplogin/redirect-wplogin.php on line 42
To cały obecny kod wtyczki (jeszcze nie napisałem funkcji odpowiadającej za konfigurację, tylko dodającą podmenu):
<?php
/*
Plugin Name: Redirect WP-Login
Plugin URI: http://twoja-domena.pl
Description: Wtyczka pozwala ustawić przekierowanie dla użytkownika po zalogowaniu lub wylogowaniu na wskazany adres np. Stronę Główną.
Version: 0.1
Author:
Author URI:
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
// filtr dla logowania
add_filter('wp_login', 'login_redirect');
function login_redirect() {
wp_redirect('http://twoja-domena.pl');
exit();
}
// filtr dla wylogowania
add_filter('wp_logout', 'logout_redirect');
function logout_redirect() {
wp_redirect('http://twoja-domena.pl');
exit();
}
/* Kod dodający opcje do menu w panelu administracyjnym */
// ...
add_action( 'admin_menu', 'redirect_wplogin_menu' );
// Krok 1
function redirect_wplogin_options() {
add_options_page( 'Opcje Redirect WP-Login', 'Redirect WP-Login', 'manage_options', 'redirect-wplogin-identifier', 'redirect_wplogin_options' );
}
// Krok 3
function redirect_wplogin_options() {
if ( !current_user_can( 'manage_options' ) ) {
wp_die( __( 'Nie posiadasz uprawnień do przeglądania tej strony.' ) );
}
echo '<div>';
echo '<p>Here is where the form would go if I actually had options.</p>';
echo '</div>';
}
?>