最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

taxonomy - JS POST update data taxonomies

programmeradmin0浏览0评论

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
Add a comment  | 

1 Answer 1

Reset to default 0

In 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] ) )
发布评论

评论列表(0)

  1. 暂无评论