如何在buddressress注册中添加占位符?如何将字段描述作为输入占位符?

时间:2014-08-25 11:51:57

标签: wordpress buddypress

如何在buddressress注册中添加占位符?

我们可以使用字段描述作为输入字段的占位符吗?

在bp-template下的register.php中。这两行代码构成了xprofile

$field_type = bp_xprofile_create_field_type( bp_get_the_profile_field_type() );
$field_type->edit_field_html();

如何编辑它们。这些线是否已连接。如何编辑x-profile字段。

3 个答案:

答案 0 :(得分:2)

甚至更好,结合这两个答案。只需将其添加到您的functions.php:

function wp_add_placeholder($elements){
    $elements['placeholder'] = bp_get_the_profile_field_name();
    return $elements;
}
add_action('bp_xprofile_field_edit_html_elements','wp_add_placeholder');

答案 1 :(得分:1)

总是有更好的方法来编辑核心:

function wp_add_placeholder($elements){
    $elements['placeholder'] = 'Placeholder';
    return $elements;
}
add_action('bp_xprofile_field_edit_html_elements','wp_add_placeholder');

答案 2 :(得分:0)

刚刚遇到这个问题,我遇到的最快的事情就是处理不同领域的覆盖类:

首先,您需要找到名为 BP_XProfile_Field_Type_Textbox 的类(对于文本框)。在bp v2.0.2中,它可以在 bp-xprofile / bp-xprofile-class.php:2358 中找到。复制函数中的整个类,并根据需要重命名类名。假设我将其重命名为 CUSTOM_BP_XProfile_Field_Type_Textbox 。在这个类中有一个名为公共函数edit_field_html(array $ raw_properties = array())的函数。

替换:

    $html = $this->get_edit_field_html_elements( array_merge(
        array(
            'type'  => 'text',
            'value' => bp_get_the_profile_field_edit_value(),
        ),
        $raw_properties
    ) );
?>
    <label for="<?php bp_the_profile_field_input_name(); ?>"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php esc_html_e( '(required)', 'buddypress' ); ?><?php endif; ?></label>
    <?php do_action( bp_get_the_profile_field_errors_action() ); ?>
    <input <?php echo $html; ?>>
<?php
}

有了这个:

$required = bp_get_the_profile_field_is_required() ? ' ' . esc_html__( '(required)', 'buddypress' ) : '';
    $html = $this->get_edit_field_html_elements( array_merge(
        array(
            'type'  => 'text',
            'value' => bp_get_the_profile_field_edit_value(),
                            'placeholder' => bp_get_the_profile_field_name() . $required
        ),
        $raw_properties
    ) );
?>
    <?php do_action( bp_get_the_profile_field_errors_action() ); ?>

    <input <?php echo $html; ?>>
<?php
}

接下来你需要做的是覆盖hendles字段类的函数。将名为 bp_xprofile_get_field_types 的函数复制到主题中并重命名。假设我将其重命名为 custom_bp_xprofile_get_field_types

在字段数组中,将 BP_XProfile_Field_Type_Textbox 的“textbox”值重命名为 CUSTOM_BP_XProfile_Field_Type_Textbox (您创建和修改的类)。

您需要做的事情是覆盖打印最终结果的功能。将名为 bp_xprofile_create_field_type 的函数复制到主题中并重命名。假设我将其重命名为 custom_bp_xprofile_create_field_type

在此功能中替换:

$field = bp_xprofile_get_field_types();

使用:

$field = custom_bp_xprofile_get_field_types();

使用您修改的字段输出

register.php 中使用刚刚创建的新函数而不是原始的一个,所以最终的结果将是:

$field_type = custom_bp_xprofile_create_field_type( bp_get_the_profile_field_type() );
$field_type->edit_field_html();

最好将 register.php 复制到 YOUR_THEME / buddypress / members / register.php ,以便在更新bp插件后不会丢失更改。

如果您想修改其他字段,只需在 custom_bp_xprofile_get_field_types 中的类数组中重命名字段的类,然后复制该字段的bp类,并将其重命名为字段数组。

希望有所帮助。可能有更好的方法,但我没有找到任何方法。