Skip to content

Instantly share code, notes, and snippets.

@vitorspencer
Last active May 11, 2021 20:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vitorspencer/5c7f19a70411405b8be0845d7b639b5b to your computer and use it in GitHub Desktop.
Save vitorspencer/5c7f19a70411405b8be0845d7b639b5b to your computer and use it in GitHub Desktop.
Add Buddypress xProfile Languages select field
<?php
/*
Add a Language (multi) select field to Buddypress xProfile fields.
You can adapt it to any other type of select field, for example one with list of Countries, Cities, etc...
Add the following to /wp-content/plugins/bp-custom.php and then visit /wp-admin/users.php?page=bp-profile-setup
Read more about bp-custom.php at the official Buddypress https://codex.buddypress.org/themes/bp-custom-php/
*/
function bp_add_languages_xprofile_select_field() {
if (!xprofile_get_field_id_from_name('Languages') && $_GET['page'] == 'bp-profile-setup') {
$languagesFieldId = xprofile_insert_field([
'field_group_id' => 1,
'name' => 'Languages',
'description' => 'Please select your languages',
'type' => 'multiselectbox', // change to "selectbox" if desired
'is_required' => false,
'order_by' => 'custom',
'field_order' => 2,
'can_delete' => true,
]);
if ($languagesFieldId) {
$languages = [
'Afrikaans',
'Albanian - shqip',
'Amharic - አማርኛ',
'Arabic - العربية',
'Aragonese - aragonés',
'Armenian - հայերեն',
'Asturian - asturianu',
'Azerbaijani - azərbaycan dili',
'Basque - euskara',
'Belarusian - беларуская',
'Bengali - বাংলা',
'Bosnian - bosanski',
'Breton - brezhoneg',
'Bulgarian - български',
'Catalan - català',
'Central Kurdish - کوردی (دەستنوسی عەرەبی)',
'Chinese - 中文',
'Chinese (Hong Kong) - 中文(香港)',
'Chinese (Simplified) - 中文(简体)',
'Chinese (Traditional) - 中文(繁體)',
'Corsican',
'Croatian - hrvatski',
'Czech - čeština',
'Danish - dansk',
'Dutch - Nederlands',
'English',
'English (Australia)',
'English (Canada)',
'English (India)',
'English (New Zealand)',
'English (South Africa)',
'English (United Kingdom)',
'English (United States)',
'Esperanto - esperanto',
'Estonian - eesti',
'Faroese - føroyskt',
'Filipino',
'Finnish - suomi',
'French - français',
'French (Canada) - français (Canada)',
'French (France) - français (France)',
'French (Switzerland) - français (Suisse)',
'Galician - galego',
'Georgian - ქართული',
'German - Deutsch',
'German (Austria) - Deutsch (Österreich)',
'German (Germany) - Deutsch (Deutschland)',
'German (Liechtenstein) - Deutsch (Liechtenstein)',
'German (Switzerland) - Deutsch (Schweiz)',
'Greek - Ελληνικά',
'Guarani',
'Gujarati - ગુજરાતી',
'Hausa',
'Hawaiian - ʻŌlelo Hawaiʻi',
'Hebrew - עברית',
'Hindi - हिन्दी',
'Hungarian - magyar',
'Icelandic - íslenska',
'Indonesian - Indonesia',
'Interlingua',
'Irish - Gaeilge',
'Italian - italiano',
'Italian (Italy) - italiano (Italia)',
'Italian (Switzerland) - italiano (Svizzera)',
'Japanese - 日本語',
'Kannada - ಕನ್ನಡ',
'Kazakh - қазақ тілі',
'Khmer - ខ្មែរ',
'Korean - 한국어',
'Kurdish - Kurdî',
'Kyrgyz - кыргызча',
'Lao - ລາວ',
'Latin',
'Latvian - latviešu',
'Lingala - lingála',
'Lithuanian - lietuvių',
'Macedonian - македонски',
'Malay - Bahasa Melayu',
'Malayalam - മലയാളം',
'Maltese - Malti',
'Marathi - मराठी',
'Mongolian - монгол',
'Nepali - नेपाली',
'Norwegian - norsk',
'Norwegian Bokmål - norsk bokmål',
'Norwegian Nynorsk - nynorsk',
'Occitan',
'Oriya - ଓଡ଼ିଆ',
'Oromo - Oromoo',
'Pashto - پښتو',
'Persian - فارسی',
'Polish - polski',
'Portuguese - português',
'Portuguese (Brazil) - português (Brasil)',
'Portuguese (Portugal) - português (Portugal)',
'Punjabi - ਪੰਜਾਬੀ',
'Quechua',
'Romanian - română',
'Romanian (Moldova) - română (Moldova)',
'Romansh - rumantsch',
'Russian - русский',
'Scottish Gaelic',
'Serbian - српски',
'Serbo-Croatian - Srpskohrvatski',
'Shona - chiShona',
'Sindhi',
'Sinhala - සිංහල',
'Slovak - slovenčina',
'Slovenian - slovenščina',
'Somali - Soomaali',
'Southern Sotho',
'Spanish - español',
'Spanish (Argentina) - español (Argentina)',
'Spanish (Latin America) - español (Latinoamérica)',
'Spanish (Mexico) - español (México)',
'Spanish (Spain) - español (España)',
'Spanish (United States) - español (Estados Unidos)',
'Sundanese',
'Swahili - Kiswahili',
'Swedish - svenska',
'Tajik - тоҷикӣ',
'Tamil - தமிழ்',
'Tatar',
'Telugu - తెలుగు',
'Thai - ไทย',
'Tigrinya - ትግርኛ',
'Tongan - lea fakatonga',
'Turkish - Türkçe',
'Turkmen',
'Twi',
'Ukrainian - українська',
'Urdu - اردو',
'Uyghur',
'Uzbek - o‘zbek',
'Vietnamese - Tiếng Việt',
'Walloon - wa',
'Welsh - Cymraeg',
'Western Frisian',
'Xhosa',
'Yiddish',
'Yoruba - Èdè Yorùbá',
'Zulu - isiZulu'
];
$i = 1;
foreach ( $languages as $language ) {
xprofile_insert_field([
'field_group_id' => 1,
'parent_id' => $languagesFieldId,
'type' => 'option',
'name' => $language,
'option_order' => $i
]);
$i++;
}
}
}
}
add_action('bp_init', 'bp_add_languages_xprofile_select_field');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment