以编程方式创建 BuddyBoss 字段时遇到问题

问题描述

我在以编程方式创建 BuddyBoss 字段时遇到问题(我假设该函数与原始 BuddyPress 函数相同或相似)。这是我现在正在使用的代码。 它在我的functions.php 主题文件中。我不打算长期使用这个触发器,但它似乎是一个很好的起点:

function add_bb_field() {
   $args = array(
     "field_group_id" => 4,"type" => "textbox","name" => "Test5"
   );
  xprofile_insert_field($args);
}

我很难找到关于参数值应该是什么的好的文档,但我认为这是正确的。我没有收到任何错误或任何错误信息,但没有创建该字段。

BuddyBoss 中的函数定义如下:(加上我在插件文件中添加的一些调试代码)

function xprofile_insert_field( $args = '' ) {
    do_action( 'qm/debug',"triggered!" );
    $r = wp_parse_args(
        $args,array(
            'field_id'          => null,'field_group_id'    => null,'parent_id'         => null,'type'              => '','name'              => '','description'       => '','is_required'       => false,'can_delete'        => true,'order_by'          => '','is_default_option' => false,'option_order'      => null,'field_order'       => null,)
    );

    // Field_group_id is required.
    if ( empty( $r['field_group_id'] ) ) {
        do_action( 'qm/debug',"empty" );
        return false;
    }

    //Check this is a non-empty,valid field type.
    if ( ! in_array( $r['type'],(array) buddypress()->profile->field_types ) ) {
        do_action( 'qm/debug',buddypress()->profile->field_types );
        return false;
    }

    // Instantiate a new field object.
    if ( ! empty( $r['field_id'] ) ) {
        $field = xprofile_get_field( $r['field_id'] );
    } else {
        $field = new BP_XProfile_Field();
    }

    $field->group_id = $r['field_group_id'];
    $field->type     = $r['type'];

    // The 'name' field cannot be empty.
    if ( ! empty( $r['name'] ) ) {
        $field->name = $r['name'];
    }

    $field->description       = $r['description'];
    $field->order_by          = $r['order_by'];
    $field->parent_id         = (int) $r['parent_id'];
    $field->field_order       = (int) $r['field_order'];
    $field->option_order      = (int) $r['option_order'];
    $field->is_required       = (bool) $r['is_required'];
    $field->can_delete        = (bool) $r['can_delete'];
    $field->is_default_option = (bool) $r['is_default_option'];

    do_action( 'qm/debug',$field );

    return $field->save();
}

代码块“检查这是一个非空的有效字段类型”似乎有问题。它在那里返回 false。我在该区域的日志记录变为 null(这对我来说似乎是一个大问题)。如果我删除那个块(顽皮),那么代码会继续运行并创建一个字段对象,但 $field -> save 似乎没有做任何事情。

我对修改 BB 有点陌生,而且我有点走投无路。我很感激一些帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)