将占位符属性添加到备注表单域

时间:2012-08-23 作者:Jamie

我一直在尝试添加到默认的WordPress评论表单中。我需要为每个字段添加占位符=。我想不出过滤器是什么。我没有收到任何错误,但我也没有看到占位符。

在这里搜索了一个小时后,我找到了这个

function my_fields($args){
        $commenter = wp_get_current_commenter();
        $user = wp_get_current_user();
        $user_identity = $user->exists() ? $user->display_name : \'\';

        $req = get_option( \'require_name_email\' );
        $aria_req = ( $req ? " aria-required=\'true\'" : \'\' );
    $fields[\'author\'] = \'<input id="author" placeholder="name" name="author" type="text" value="\' 
    . esc_attr( $commenter[\'comment_author\'] ) . \'" size="30"\' . $aria_req . \' /></p>\';

    return $args;
}

add_filter(\'comment_form\', \'my_fields\');
我尝试了许多不同的变化,并尝试返回许多不同的东西,但我没有运气。

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

您应该筛选\'comment_form_default_fields\' 添加placeholder 属性

示例代码

add_filter( \'comment_form_default_fields\', \'wpse_62742_comment_placeholders\' );

/**
 * Change default fields, add placeholder and change type attributes.
 *
 * @param  array $fields
 * @return array
 */
function wpse_62742_comment_placeholders( $fields )
{
    $fields[\'author\'] = str_replace(
        \'<input\',
        \'<input placeholder="\'
        /* Replace \'theme_text_domain\' with your theme’s text domain.
         * I use _x() here to make your translators life easier. :)
         * See http://codex.wordpress.org/Function_Reference/_x
         */
            . _x(
                \'First and last name or a nick name\',
                \'comment form placeholder\',
                \'theme_text_domain\'
                )
            . \'"\',
        $fields[\'author\']
    );
    $fields[\'email\'] = str_replace(
        \'<input id="email" name="email" type="text"\',
        /* We use a proper type attribute to make use of the browser’s
         * validation, and to get the matching keyboard on smartphones.
         */
        \'<input type="email" placeholder="[email protected]"  id="email" name="email"\',
        $fields[\'email\']
    );
    $fields[\'url\'] = str_replace(
        \'<input id="url" name="url" type="text"\',
        // Again: a better \'type\' attribute value.
        \'<input placeholder="http://example.com" id="url" name="url" type="url"\',
        $fields[\'url\']
    );

    return $fields;
}
结果enter image description here

有些注释不使用占位符代替label. 屏幕阅读器用户会非常生气。确实如此not allowed 无论如何type 属性也是。这将比placeholder.
  • 确保字段看起来不是已经填写的。但试着得到一个可读的对比。是的,那不容易。你可以use some CSS, 但它并不适用于所有浏览器
  • SO网友:Jake

    我想您要使用此筛选器:

    comment_form_default_fields
    
    也可以关注特定领域:

    comment_form_field_$name
    
    编辑,供参考:

    http://codex.wordpress.org/Function_Reference/comment_form

    结束