Учитывая объект, как я могу получить имя, используемое для его описания?

Не знаю, является ли это «правильным» способом сделать это ... Но мне нужна была функция добавления полей ретранслятора ACF с указанием значения даты в качестве атрибута в post save, так что это была функция, которую я придумал с:

add_action( 'save_post', 'ed_save_post_function', 10, 3 );

function ed_save_post_function( $post_ID, $post, $update ) {
  //print_r($post);
  if($post->post_type == 'product')
    {
     $dates = get_field('course_dates', $post->ID);
     //print_r($dates);
     if($dates)
       {
        $date_arr = array();
        $val = '';
        $i = 0;
        foreach($dates as $d)
               {
                 if($i > 0)
                   {
                    $val .= ' | '.date('d-m-Y', strtotime($d['date']));   
                   }
               else{
                    $val .= date('d-m-Y', strtotime($d['date']));
                   } 
                 $i++;  
               }
            $entry = array(
                           'course-dates' => array(
                                                   'name' => 'Course Dates',
                                                   'value' => $val,
                                                   'position' => '0',
                                                   'is_visible' => 1,
                                                   'is_variation' => 1,
                                                   'is_taxonomy' => 0
                                                  )
                          );
                update_post_meta($post->ID, '_product_attributes', $entry);
       }
    }
}

Надеюсь, это поможет кому-то.

0
задан Reshma Suresh 5 March 2019 в 11:36
поделиться

1 ответ

Вы можете использовать Object.keys() для перебора ключей объекта, а затем использовать Array.filter() для фильтрации ключей, здесь я проверяю, есть ли у внутренних объектов свойство [ 114] и если это свойство истинно:

const mainObj = {
  obj1: { show: true, a: 1 },
  obj2: { show: false, a: 2 },
  obj3: { a: 3 },
  obj4: { show: true, b: 1 }
};

const result = Object.keys(mainObj).filter(key => mainObj[key].show);

console.log(result);

Если вы хотите использовать for-in [119 ] необходимо убедиться, что свойство является частью объекта и не унаследовано от его цепочки прототипов, используя Object.hasOwnProperty() :

const mainObj = {
  obj1: { show: true, a: 1 },
  obj2: { show: false, a: 2 },
  obj3: { a: 3 },
  obj4: { show: true, b: 1 }
};

const result = [];
for (const prop in mainObj) {
  if (mainObj.hasOwnProperty(prop) && mainObj[prop].show) {
    result.push(prop);
  }
}

console.log(result);
[ 1120]

0
ответ дан jo_va 5 March 2019 в 11:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: