web-dev-qa-db-ja.com

BuddyPress:新しいプロフィールフィールドとグループを追加するためのフック

私はアクティブになったときに追加のプロファイルグループとその中にいくつかのフィールドを追加するプラグインを書いています。私はbp_xprofile_groupsbp_xprofile_fieldsに新しい行を挿入するために基本的な$wpdb関数を使っています

そのため、プロセス全体は非常に不器用に見えます。

  1. bp_xprofile_groupsに新しい行を追加します。
  2. その行のIDを取得します(WHERE name = 'New Group Name')。
  3. これらのIDを使用して、bp_xprofile_fieldsに新しい行を挿入します

いくつかのフィールドはオプションなので、全部で5つのSQLクエリを作成し、そのフィールドグループに1つのグループフィールドと2つのチェックボックスを持つ4つのオプションフィールドを作成します。

BuddyPressフックを使って作りたいです。必要なものが見つかりました。

xprofile_insert_field_group($args)xprofile_insert_field($args)

だからそれはこのようになります:

$args = array(
    'name'           => 'Test',
    'description'    => '',
    'can_delete'     => '0'
    );
xprofile_insert_field_group( $args );

それから私はxprofile_insert_field()を使用することになっていますが、私はfield_group_idで使用するために作成したグループのIDを知りません:

$args = array(
    'field_group_id'           => ?????,
    'parent_id'    => '',
    'type'     => 'textbox',
    ...
    ...
    );
xprofile_insert_field( $args );

誰かが何か提案がありますか?

4
mikek

あまり多くの人がBPを調べていないように思われるので、これが私が見つけた解決策です。

BPフックを使用して新しいフィールドグループを追加するには

// Create new Field Group       
$group_args = array(
     'name' => 'Social Networks'
     );
$group_id = xprofile_insert_field_group( $group_args ); // group's ID

この新しいグループにいくつかのフィールドを追加するには:

// Insert New Field
xprofile_insert_field(
    array (
           field_group_id  => $group_id,
           name            => 'Twitter',
           can_delete      => false, // Doesn't work *
           field_order  => 1,
           is_required     => false,
           type            => 'textbox'
    )
);

現在BPにはバグがあると思います。 can_delete = 0はあなたが何かを削除することはできないことを意味します(すなわちフィールドやグループ)が、あなたがxprofile_insert_field()に何を渡してもそれはcan_delete = 1になるでしょう。

2
mikek