Intereting Posts
WordPress предотвращает множественные короткие коды Переименуйте существующие старые загруженные изображения, содержащие акцентированные французские символы (не во время загрузки) Page-loop – это циклический контент из пользовательских циклов на одном сайте. Как этого избежать? Как изменить все тексты «Post» в dahboard в «Article»? Разрыв нескольких слов и вставка изображения после первого слова Как перечислить Крючки и порядок выполнения на текущей странице загрузки? Скрыть несколько коротких кодов на сообщениях из внутренних Удалить «Комментарии закрыты» Уведомление из шаблона пользовательского типа отправки meta_query, где значение равно заданному значению WooCommerce: несколько полей ввода для нескольких вариантов продукта Создание пользовательских настроек на страницах / сообщениях для плагина «Параметры экрана» и «Справка» на странице «Администрирование сообщений» не работает Изменение меню «Страницы по умолчанию» в wp-admin Добавление дополнительного признанного изображения для page_for_posts Сопоставление внешних данных с тегами через term_id

BuddyPress: hook для добавления новых полей профиля и групп

Я пишу плагин, который добавляет дополнительную группу профилей и некоторые поля в нем при активации. Я использую основные функции $wpdb для вставки новых строк в bp_xprofile_groups и bp_xprofile_fields

Таким образом, весь процесс выглядит очень хромым:

  1. Я добавляю новую строку в bp_xprofile_groups ;
  2. Я получаю идентификатор этой строки ( WHERE name = 'New Group Name' );
  3. Я использую эти ID для вставки новых строк в bp_xprofile_fields

Некоторые поля являются параметрами, поэтому в общей сложности я делаю 5 SQL-запросов только для создания 1 группового поля и 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 (), но я не знаю ID группы, которую я только что создал для использования в field_group_id:

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

У кого-нибудь есть предложения?

Кажется, что не так много людей врываются в 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 .