web-dev-qa-db-fra.com

BuddyPress: au crochet pour ajouter de nouveaux champs et groupes de profils

J'écris un plugin qui ajoute un groupe de profil supplémentaire et quelques champs lorsqu'il est activé. J'utilise des fonctions $wpdb de base pour insérer de nouvelles lignes dans bp_xprofile_groups et bp_xprofile_fields

Donc tout le processus a l'air très boiteux:

  1. J'ajoute une nouvelle ligne à bp_xprofile_groups ;
  2. Je reçois l'ID de cette ligne (WHERE name = 'Nouveau nom du groupe');
  3. J'utilise ces identifiants pour insérer de nouvelles lignes dans bp_xprofile_fields

Certains champs sont des options, donc au total, je fais 5 requêtes SQL pour créer un champ de groupe et 4 champs d’option avec 2 cases à cocher dans ce groupe de champs.

Je voudrais le faire en utilisant des crochets BuddyPress. J'ai trouvé ce dont j'avais besoin:

xprofile_insert_field_group($args) et xprofile_insert_field($args)

donc ça ressemble à ça:

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

et puis je suis supposé utiliser xprofile_insert_field () mais je ne connais pas l'ID d'un groupe que je viens de créer à utiliser dans field_group_id:

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

Est-ce que quelqu'un a des suggestions?

4
mikek

Il semble que peu de gens s’intéressent à BP. Voici donc la solution que j’ai trouvée.

Pour ajouter un nouveau groupe de champs à l'aide de points d'ancrage BP:

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

Pour ajouter des champs à ce nouveau groupe:

// 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'
    )
);

Je pense qu'il y a actuellement un bug dans BP. can_delete = 0 signifie que vous ne pouvez pas supprimer quelque chose (c.-à-d. un champ ou un groupe), mais peu importe ce que vous transmettez à xprofile_insert_field(), ce sera can_delete = 1.

2
mikek