wordpress建站:怎么利用wp_login_form做一个登录表单

2024年10月18日 建站教程

函数原型:

wp_login_form( array $args = array() ): void|string

提供一个简单的登录表单,可在WordPress中的任何地方使用。

参数说明:

$args 数组中包含以下字段:

echo,默认 true,会回显登录表单HTML。为$echo传递 false ,将以字符串的形式返回。

redirect,登录后要调转的页面URL-应当是一个绝对路径。

form_id,form 表单的 id 属性值。默认:’loginform’。

label_username,用户名或电子邮件地址字段的标签。默认:’用户名或电子邮件地址’。

label_password,密码字段的标签。默认:’密码’。

label_remember,是否记住密码的标签。默认:’记住我’。

label_login_in,登录按钮上的文字。默认:’登录’。

id_username,用户名或电子邮件地址字段的 ID 属性值。默认:’user_login’。

id_password,密码字段的 ID 属性值。默认:’user_pass’。

id_remember,是否记住密码字段的 ID 属性值。默认:’remenberme’。

id_submit,提交按钮的 ID 属性值。默认:’wp-submit’。

remember,是否显示”记住密码”控件。

value_username,用户名的默认值。

value_remember,是否记住密码的默认值。默认:false。

函数源码:

function wp_login_form( $args = array() ) {
  $defaults = array(
    'echo'           => true,
    // Default 'redirect' value takes the user back to the request URI.
    'redirect'       => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
    'form_id'        => 'loginform',
    'label_username' => __( 'Username or Email Address' ),
    'label_password' => __( 'Password' ),
    'label_remember' => __( 'Remember Me' ),
    'label_log_in'   => __( 'Log In' ),
    'id_username'    => 'user_login',
    'id_password'    => 'user_pass',
    'id_remember'    => 'rememberme',
    'id_submit'      => 'wp-submit',
    'remember'       => true,
    'value_username' => '',
    // Set 'value_remember' to true to default the "Remember me" checkbox to checked.
    'value_remember' => false,
  );

  $args = wp_parse_args( $args, apply_filters( 'login_form_defaults', $defaults ) );

  $login_form_top = apply_filters( 'login_form_top', '', $args );

  $login_form_middle = apply_filters( 'login_form_middle', '', $args );

  $login_form_bottom = apply_filters( 'login_form_bottom', '', $args );

  $form =
    sprintf(
      '<form name="%1$s" id="%1$s" action="%2$s" method="post">',
      esc_attr( $args['form_id'] ),
      esc_url( site_url( 'wp-login.php', 'login_post' ) )
    ) .
    $login_form_top .
    sprintf(
      '<p class="login-username">
        <label for="%1$s">%2$s</label>
        <input type="text" name="log" id="%1$s" autocomplete="username" class="input" value="%3$s" size="20" />
      </p>',
      esc_attr( $args['id_username'] ),
      esc_html( $args['label_username'] ),
      esc_attr( $args['value_username'] )
    ) .
    sprintf(
      '<p class="login-password">
        <label for="%1$s">%2$s</label>
        <input type="password" name="pwd" id="%1$s" autocomplete="current-password" spellcheck="false" class="input" value="" size="20" />
      </p>',
      esc_attr( $args['id_password'] ),
      esc_html( $args['label_password'] )
    ) .
    $login_form_middle .
    ( $args['remember'] ?
      sprintf(
        '<p class="login-remember"><label><input name="rememberme" type="checkbox" id="%1$s" value="forever"%2$s /> %3$s</label></p>',
        esc_attr( $args['id_remember'] ),
        ( $args['value_remember'] ? ' checked="checked"' : '' ),
        esc_html( $args['label_remember'] )
      ) : ''
    ) .
    sprintf(
      '<p class="login-submit">
        <input type="submit" name="wp-submit" id="%1$s" class="button button-primary" value="%2$s" />
        <input type="hidden" name="redirect_to" value="%3$s" />
      </p>',
      esc_attr( $args['id_submit'] ),
      esc_attr( $args['label_log_in'] ),
      esc_url( $args['redirect'] )
    ) .
    $login_form_bottom .
    '</form>';

  if ( $args['echo'] ) {
    echo $form;
  } else {
    return $form;
  }
}

包含钩子:
过滤要显示在登录表单底部的内容。

apply_filters( 'login_form_bottom', string $content, array $args )

筛选默认的登录表单输出参数。

apply_filters( 'login_form_defaults', array $defaults )

筛选要显示在登录表单中间的内容。

apply_filters( 'login_form_middle', string $content, array $args )

过滤要显示在登录表单顶部的内容。

apply_filters( 'login_form_top', string $content, array $args )

使用举例:

<?php wp_login_form(); ?>

本文链接:http://so.lmcjl.com/news/15641/

展开阅读全文
上一篇:搬运合同电子版 下一篇:SQL 随机
相关内容