正在删除WordPress默认登录表单上的标签和<br>标签

时间:2015-12-12 作者:Bob Diego

我正在定制登录表单,使其更像谷歌的极简表单,它没有表单标签,而是依赖占位符提示用户输入字段。表单开始时如下所示:

    <p>
        <label for="user_login">Username<br />
        <input type="text" name="log" id="user_login" class="input" value="" size="20" /></label>
    </p>
WordPress没有在登录中插入占位符的方法,但我找到了一个简单的jQuery解决方案here.

当您以自己的形式调用WordPress登录时,可以传递值以覆盖默认值,如中所述Codex. 在参数中放置空值将删除相关标签,例如:

    <?php
        $args = array(
            \'label_username\' => __( \'\' ),
            \'label_password\' => __( \'\' ),
            \'label_log_in\'   => __( \'Sign In\' ),
        );
     ?>
    <?php wp_login_form( $args ); ?>
此用法将彻底删除标签and the <br /> tag 下面是标签,所以看起来像这样:

    <p class="login-username">
        <label for="user_login"></label>
        <input type="text" name="log" id="user_login" class="input" value="" size="20" />
    </p>
然而,WordPress的默认登录页面值(例如/wp login.php处的页面)似乎无法修改,因为它不是由您自己的函数调用的。

我找到了一种方法,可以用堆栈用户提供的默认形式更改标签here. 可以修改此方法以删除标签,就像我所做的那样:

    function empty_login_labels() {
        add_filter( \'gettext\', \'username_change\', 20, 3 );
        function username_change( $translated_text, $text, $domain ) 
        {
            if (preg_match("/Username|Password/", $text)) {
                $translated_text = \'\';
            }
            return $translated_text;
        }
    }
    add_action( \'login_head\', \'empty_login_labels\' );
不幸的是,可能是因为过滤器在流程的后期应用,WordPress已经添加了<br /> 标签(现在为空)后的标签:

    <p>
        <label for="user_login"><br />
        <input type="text" name="log" id="user_login" class="input" value="" size="20" /></label>
    </p>
注意-我刚刚注意到WordPress对这两种表单的格式略有不同-默认表单中的标签包含输入字段,而在用户调用的函数中(wp_login_form()) 标签容器在输入字段之前关闭。可能与此问题没有密切关系,但将解释代码片段看起来不同的原因

我可以在额外的<br> 用CSS标记,但这是有问题的。有没有办法去掉这个<br /> 标记,或者至少在其中添加一个标识符,以便使用css对其进行深度处理?

1 个回复
最合适的回答,由SO网友:Bob Diego 整理而成

感谢@dalbaeb为我指明了正确的方向-我没有意识到你可以将标签元素的属性值作为目标。目标的最终样式<br> 标签后的标签为so:

label[for=user_login] > br, label[for=user_pass] > br
{
    display: none;
}
可以找到属性选择器的MDN文档here.

相关推荐

OOP development and hooks

我目前正在为Wordpress编写我的第一个OOP插件。为了帮助我找到一点结构,a boiler plate 这为我奠定了基础。在里面Main.php 有一种方法可以为管理员加载JS和CSS资产:/** * Register all of the hooks related to the admin area functionality * of the plugin. * * @since 0.1.0 * @access private