diff --git a/includes/core/class-shortcodes.php b/includes/core/class-shortcodes.php index d34a789f..d9c36e84 100644 --- a/includes/core/class-shortcodes.php +++ b/includes/core/class-shortcodes.php @@ -162,6 +162,193 @@ if ( ! class_exists( 'um\core\Shortcodes' ) ) { $this->emoji[':innocent:'] = $base_uri . '72x72/1f607.png'; $this->emoji[':smirk:'] = $base_uri . '72x72/1f60f.png'; $this->emoji[':expressionless:'] = $base_uri . '72x72/1f611.png'; + + // test shortcode + add_shortcode( 'um_login', array( &$this, 'login_form' ) ); + } + + public function login_form( $args = array() ) { + if ( ! UM()->is_new_ui() ) { + return ''; + } + + global $error; + + if ( is_user_logged_in() ) { + return ''; + } + + /** There is possible to use 'shortcode_atts_ultimatemember_login' filter for getting customized $atts. This filter is documented in wp-includes/shortcodes.php "shortcode_atts_{$shortcode}" */ + $args = shortcode_atts( + array( + 'login_button' => __( 'Log In', 'ultimate-member' ), + 'show_remember' => true, + 'show_forgot' => true, + 'login_redirect' => '', + 'login_redirect_url' => '', + 'form_id' => '', // backward compatibility argument + ), + $args, + 'ultimatemember_login' + ); + + $styling = UM()->options()->get( 'styling' ); + switch ( $styling ) { + case 'none': + break; + case 'layout_only': + wp_enqueue_script('um-login' ); + wp_enqueue_style( 'um-login-base' ); + break; + default: + wp_enqueue_script('um-login' ); + wp_enqueue_style( 'um-login-full' ); + break; + } + + $login_args = array( + 'form_id' => 'um-loginform', + 'um_login_form' => true, + 'um_login_form_id' => absint( $args['form_id'] ), + 'um_login_redirect' => '', // if empty then get default from role + 'um_show_forgot' => (bool) $args['show_forgot'], + 'echo' => true, + 'remember' => (bool) $args['show_remember'], + 'label_username' => __( 'Username or Email Address', 'ultimate-member' ), + 'label_password' => __( 'Password', 'ultimate-member' ), + 'label_remember' => __( 'Remember Me', 'ultimate-member' ), + 'label_log_in' => ! empty( $args['login_button'] ) ? $args['login_button'] : __( 'Log In', 'ultimate-member' ), + ); + + if ( ! isset( $_GET['redirect_to'] ) || empty( $_GET['redirect_to'] ) ) { + $redirect = um_get_predefined_page_url( 'user' ); + $login_args['redirect'] = $redirect; + } + + /** + * Filters Ultimate Member Login Form arguments for init it through `wp_login_form()`. + * + * @since 3.0 + * @hook um_login_form_args + * + * @param {array} $login_args Attributes for `wp_login_form()` function init. + * @param {array} $args Login form shortcode attributes. + * + * @return {array} Attributes for `wp_login_form()` function. + */ + $login_args = apply_filters( 'um_login_form_args', $login_args, $args ); + + $wp_error = new \WP_Error(); + + $error_codes = array( + 'empty' => sprintf( __( '%s and %s are required.', 'ultimate-member' ), $login_args['label_username'], $login_args['label_password'] ), + 'failed' => __( 'Invalid username, email address or incorrect password.', 'ultimate-member' ), + 'um_blocked_email' => __( 'This email address has been blocked.', 'ultimate-member' ), + 'um_blocked_domain' => __( 'This email address domain has been blocked.', 'ultimate-member' ), + 'um_account_inactive' => __( 'Your account has been disabled.', 'ultimate-member' ), + 'um_account_awaiting_admin_review' => __( 'Your account has not been approved yet.', 'ultimate-member' ), + 'um_account_awaiting_email_confirmation' => __( 'Your account is awaiting e-mail verification.', 'ultimate-member' ), + 'um_account_rejected' => __( 'Your membership request has been rejected.', 'ultimate-member' ), + ); + /** + * Filters Ultimate Member Login Form errors and their codes. + * + * @since 3.0 + * @hook um_login_form_error_codes + * + * @param {array} $error_codes Error codes in format $error_code => $error_message. + * @param {array} $args Login form attributes. + * + * @return {array} Error codes. + */ + $error_codes = apply_filters( 'um_login_form_error_codes', $error_codes, $args, $login_args ); + + if ( ! empty( $args['show_forgot'] ) ) { + // Change lostpassword URL only when using Ultimate Member Login Form + add_filter( 'lostpassword_url', array( &$this, 'change_lostpassword_url' ), 10, 1 ); + } + + ob_start(); + ?> + +
' . apply_filters( 'login_errors', $errors ) . "
\n"; + } + + if ( ! empty( $messages ) ) { + /** This filter is documented in wp-login.php */ + echo '' . apply_filters( 'login_messages', $messages ) . "
\n"; + } + } + ?> + + + ++ + + + +
+