Должен ли я создавать новую функцию для каждого поля meta box?

#php #wordpress

#php #wordpress

Вопрос:

Я все еще пытаюсь научиться создавать комплексный плагин в WordPress, и у меня возникают проблемы с мета-блоками.

Если это возможно, я хотел бы иметь несколько полей в одном метабоксе, как по эстетическим причинам, так и для того, чтобы я не писал новую функцию обратного вызова для каждого отдельного метабокса.

Возможно ли это?

Вот мой текущий код (без учета регистрации типа post и функции сохранения).

 add_action( 'plugins_loaded', 'ALCI_member_setup' );

function ALCI_member_setup() {
    add_action( 'add_meta_boxes', 'ALCI_members_create_metaboxes' );
}

function ALCI_members_create_metaboxes()
{   
   add_meta_box('ALCI_member_qualification', 'Member Qualifications', 'ALCI_member_qualification', 'ALCI-members', 'normal', 'high');   
}

function ALCI_member_qualification() {

  global $post;
  echo '<input type="hidden" name="ALCI_member_qualification_noncename" id="ALCI_member_qualification_noncename" value="' .
  wp_create_nonce( plugin_basename(__FILE__) ) . '" />';

  $qualification = get_post_meta($post->ID, 'ALCI_member_qualification', true);

  echo '<p>Qualifications that appear beside the members name, e.g. BSc (Hons) IBCLC</p> 
  <input type="text" name="ALCI_member_qualification" value="' . $qualification  . '" class="widefat" />';
}
  

Ответ №1:

Да, это абсолютно возможно.

Просто добавьте остальные ваши meta поля в ALCI_member_qualification() , а затем добавьте функции сохранения для них, и это должно работать точно так же.

Комментарии:

1. Спасибо, так мне понадобится отдельная функция сохранения для каждого из них, да?

2. на самом деле я получил функцию сохранения для работы с циклом for, проходящим через каждое поле ввода, спасибо