'sanitize_hex_color', 'default' => '']); register_setting($group, 'wp_multi_login_logo', ['sanitize_callback' => 'esc_url_raw', 'default' => '']); register_setting($group, 'wp_multi_login_logo_home', ['sanitize_callback' => 'absint', 'default' => 1]); register_setting($group, 'wp_multi_login_bg_color', ['sanitize_callback' => 'sanitize_hex_color', 'default' => '']); register_setting($group, 'wp_multi_login_bg_image', ['sanitize_callback' => 'esc_url_raw', 'default' => '']); register_setting($group, 'wp_multi_login_bg_size', ['sanitize_callback' => 'wp_multi_login_design_sanitize_bg_size', 'default' => 'cover']); register_setting($group, 'wp_multi_login_form_bg', ['sanitize_callback' => 'sanitize_hex_color', 'default' => '']); register_setting($group, 'wp_multi_login_button', ['sanitize_callback' => 'sanitize_hex_color', 'default' => '']); register_setting($group, 'wp_multi_login_link', ['sanitize_callback' => 'sanitize_hex_color', 'default' => '']); register_setting($group, 'wp_multi_login_custom_css', ['sanitize_callback' => 'wp_multi_login_design_sanitize_css', 'default' => '']); } add_action('admin_init', 'wp_multi_login_design_register'); // Eigenes CSS grob absichern (kein -Ausbruch, keine Tags) function wp_multi_login_design_sanitize_css($css) { $css = (string) $css; $css = wp_strip_all_tags($css); return trim($css); } // Anzeige-Art des Hintergrundbilds (Whitelist) function wp_multi_login_design_sanitize_bg_size($value) { $allowed = array('cover', 'contain', 'stretch', 'tile', 'center'); return in_array($value, $allowed, true) ? $value : 'cover'; } // Liefert die CSS-Regeln für die gewählte Hintergrund-Anzeigeart function wp_multi_login_design_bg_rules($mode) { switch ($mode) { case 'contain': return 'background-size:contain !important; background-repeat:no-repeat !important; background-position:center !important;'; case 'stretch': return 'background-size:100% 100% !important; background-repeat:no-repeat !important; background-position:center !important;'; case 'tile': return 'background-size:auto !important; background-repeat:repeat !important;'; case 'center': return 'background-size:auto !important; background-repeat:no-repeat !important; background-position:center !important;'; case 'cover': default: return 'background-size:cover !important; background-repeat:no-repeat !important; background-position:center !important;'; } } /* * Ausgabe auf der Login-Seite */ function wp_multi_login_design_styles() { $form_text = get_option('wp_multi_login_form_text', ''); $logo = get_option('wp_multi_login_logo', ''); $bg_color = get_option('wp_multi_login_bg_color', ''); $bg_image = get_option('wp_multi_login_bg_image', ''); $form_bg = get_option('wp_multi_login_form_bg', ''); $button = get_option('wp_multi_login_button', ''); $link = get_option('wp_multi_login_link', ''); $css = get_option('wp_multi_login_custom_css', ''); // Nur ausgeben, wenn überhaupt etwas konfiguriert ist if (!$logo && !$bg_color && !$bg_image && !$form_bg && !$button && !$link && !$css && !$form_text) { return; } echo "\n"; } add_action('login_enqueue_scripts', 'wp_multi_login_design_styles'); // Logo-Link auf die eigene Startseite statt wordpress.org function wp_multi_login_design_headerurl($url) { return get_option('wp_multi_login_logo_home', 1) ? home_url('/') : $url; } add_filter('login_headerurl', 'wp_multi_login_design_headerurl'); // Logo-Titel = Seitenname function wp_multi_login_design_headertext($text) { return get_option('wp_multi_login_logo_home', 1) ? get_bloginfo('name') : $text; } add_filter('login_headertext', 'wp_multi_login_design_headertext'); /* * Assets für die Einstellungsseite (Color-Picker + Medienauswahl) */ function wp_multi_login_design_admin_assets($hook) { if ($hook !== 'wp-multi_page_wp_multi_login_design' && $hook !== 'toplevel_page_wp_multi_login_design') { return; } wp_enqueue_style('wp-color-picker'); wp_enqueue_script('wp-color-picker'); wp_enqueue_media(); } add_action('admin_enqueue_scripts', 'wp_multi_login_design_admin_assets'); /* * Einstellungsseite */ function wp_multi_login_design_page() { if (!current_user_can('manage_options')) { wp_die(__('Zugriff verweigert.', 'wp-multi')); } wpmt_admin_page_open( __('Login-Design', 'wp-multi'), __('Die WordPress-Login-Seite nach deinen Wünschen gestalten', 'wp-multi') ); $logo = get_option('wp_multi_login_logo', ''); $bg_image = get_option('wp_multi_login_bg_image', ''); wpmt_admin_notice('info', sprintf( __('Vorschau: %s (in neuem Tab öffnen – als eingeloggter Nutzer wirst du ggf. direkt weitergeleitet, dann kurz ausloggen).', 'wp-multi'), '' . esc_html(wp_login_url()) . '' )); wpmt_admin_card_open(__('Gestaltung', 'wp-multi')); ?>