How can I call the value of each term with my js function? I need use a Array not just
` useractivities=[];
$('.user_activities').each(function(){
useractivities.push( $(this).val() )
}); `
? How?
Here is my code:
HTML VIEW:
<div class="multiselect">
<div id="user_activities_form">
<label for="user_activities-randonnee">
<input type="checkbox" name="user_activities[]" id="user_activities-randonnee" value="10028">
RANDONNEE </label><br>
<label for="user_activities-vtt">
<input type="checkbox" name="user_activities[]" id="user_activities-vtt" value="10029">
VTT </label><br>
</div>
JS CALL
useractivities=[];
$('.user_activities').each(function(){
useractivities.push( $(this).val() )
}); // <==HERE
$.ajax({
type: 'POST',
url: ajaxurl,
data: {
'action' : 'wpestate_ajax_update_profile',
'user_activities' : useractivities
},
success: function (data) {
$('#profile_message').empty().append('<div class="login-alert">' + data + '<div>');
},
error: function (errorThrown) {
}
});
UPDATE FUNCTION (wpestate_ajax_update_profile):
$current_user = wp_get_current_user();
$userID = $current_user->ID;
$useractivities = get_terms($_POST['user_activities'], array( 'hide_empty' => false ) );
foreach($useractivities as $useractivitie){
$useractivitieID = $useractivitie->term_id;
if ('POST' === $_SERVER['REQUEST_METHOD']) {
if(!isset($_POST['user_activities']))
wp_set_object_terms($userID,$useractivitieID,'user_activities',false);
else
wp_set_object_terms($userID,$useractivitieID,'user_activities',true);
}
}
How can I call the value of each term with my js function? I need use a Array not just
` useractivities=[];
$('.user_activities').each(function(){
useractivities.push( $(this).val() )
}); `
? How?
Here is my code:
HTML VIEW:
<div class="multiselect">
<div id="user_activities_form">
<label for="user_activities-randonnee">
<input type="checkbox" name="user_activities[]" id="user_activities-randonnee" value="10028">
RANDONNEE </label><br>
<label for="user_activities-vtt">
<input type="checkbox" name="user_activities[]" id="user_activities-vtt" value="10029">
VTT </label><br>
</div>
JS CALL
useractivities=[];
$('.user_activities').each(function(){
useractivities.push( $(this).val() )
}); // <==HERE
$.ajax({
type: 'POST',
url: ajaxurl,
data: {
'action' : 'wpestate_ajax_update_profile',
'user_activities' : useractivities
},
success: function (data) {
$('#profile_message').empty().append('<div class="login-alert">' + data + '<div>');
},
error: function (errorThrown) {
}
});
UPDATE FUNCTION (wpestate_ajax_update_profile):
$current_user = wp_get_current_user();
$userID = $current_user->ID;
$useractivities = get_terms($_POST['user_activities'], array( 'hide_empty' => false ) );
foreach($useractivities as $useractivitie){
$useractivitieID = $useractivitie->term_id;
if ('POST' === $_SERVER['REQUEST_METHOD']) {
if(!isset($_POST['user_activities']))
wp_set_object_terms($userID,$useractivitieID,'user_activities',false);
else
wp_set_object_terms($userID,$useractivitieID,'user_activities',true);
}
}
Share
Improve this question
edited Oct 8, 2020 at 8:15
Anarko
asked Oct 1, 2020 at 12:05
AnarkoAnarko
112 bronze badges
2
- You're retrieving terms, but then you're saving post meta, not terms, you need to save terms, not post meta – Tom J Nowell ♦ Commented Oct 1, 2020 at 13:41
- @TomJNowell ok thanks! i need use wp_set_object_terms? – Anarko Commented Oct 1, 2020 at 13:48
1 Answer
Reset to default 0In this case you issue your ID while you have to look for the "name" or "value".
if( isset( $_POST['user_activities-'.$useractivitie->slug] ) )
Change to:
if( isset( $_POST['user_activities'][$useractivitie] ) )