Я учусь добавлять метабоксы к сообщениям. Я хотел бы создать группу метабоксов с вводом текста и несколькими флажками. На данный момент флажки просто ставятся вот так, но в конечном итоге они будут сгенерированы циклом foreach с содержимым из другого места, поэтому для меня важно дать им такие имена, как entry[0], entry[1] и так далее. Они должны быть сохранены в цикле, так как я не знаю, сколько их будет сгенерировано.
Это то, что у меня есть до сих пор:
// adding the metaboxes
function add_post_reference() {
add_meta_box('post-reference', 'Reference', 'referenceCallBack', 'languagecourses', 'side', 'high');
}
add_action('add_meta_boxes', 'add_post_reference');
// callback function
function referenceCallBack($post) {
wp_nonce_field( 'reference_meta_box', 'reference_nonce' );
$name_value = get_post_meta( $post->ID, '_post_reference_name', true );
$link_value = get_post_meta( $post->ID, '_post_reference_link', true );
пытаюсь сделать то же самое, что и выше, с моими флажками, но я не знаю, что там поставить:
$teachers_value = get_post_meta( $post->ID, 'what do I put here?', true ); // what do I put here?
Повторяя структуру html сейчас (текстовые вводы работают (значения сохраняются), я пытаюсь понять, как сохранить флажки:
echo '<label for="reference-name">'. 'Reference Name' .'</label>';
echo '<input type="text" id="reference-name" name="post_reference_name" placeholder="Example" value="'.$name_value.'" size="25"/>';
echo '<p class="howto">'. 'Add the name of the reference' .'</p>';
echo '<label for="reference-link">'. 'Reference Link' .'</label>';
echo '<input type="text" id="reference-link" name="post_reference_link" placeholder="http://www.example.com/" value="'.$link_value.'" size="25"/>';
echo '<p class="howto">'. 'Add the link of the reference' .'</p>';
// my checkboxes
echo '<input type="checkbox" name="entry[0]" value="moredata">';
echo '<input type="checkbox" name="entry[1]" value="moredata">';
echo '<input type="checkbox" name="entry[2]" value="moredata">';
echo '<input type="checkbox" name="entry[3]" value="moredata">';
echo '<input type="checkbox" name="entry[4]" value="moredata">';
}
function save_post_reference( $post_id ) {
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
if ( ! isset( $_POST['reference_nonce'] ) ) {
return;
}
if ( ! wp_verify_nonce( $_POST['reference_nonce'], 'reference_meta_box' ) ) {
return;
}
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
if ( ! isset( $_POST['post_reference_name'] ) || ! isset( $_POST['post_reference_link'] ) ) {
return;
}
$reference_name = sanitize_text_field( $_POST['post_reference_name'] );
$reference_link = sanitize_text_field( $_POST['post_reference_link'] );
// looping through the checkboxes
for ($i = 0; $i < 5; $i++) {
$teachers_names = sanitize_text_field($_POST['entry'][$i]);
}
update_post_meta( $post_id, '_post_reference_name', $reference_name );
update_post_meta( $post_id, '_post_reference_link', $reference_link );
Опять же, что я здесь помещаю?
update_post_meta( $post_id, 'whatdoIputhere?', $teachers_names); // what do I put here?
}
add_action( 'save_post', 'save_post_reference' );
Может ли кто-нибудь помочь мне в этом?
get_post_meta($post_ID, 'your key', true);
для получения данных иupdate_post_meta( $post_id, 'your key', $teachers_names);
для их сохранения - person Happy Coding   schedule 15.02.2017update_post_meta( $post_id, '_post_reference_name', $reference_name ); update_post_meta( $post_id, '_post_reference_link', $reference_link );
Поэтому я помещаю здесь «entry[]», но это не сохраняется.update_post_meta( $post_id, 'entry[]', $teachers_names);
Не могли бы вы пролить больше света? - person oneday   schedule 15.02.2017update_post_meta( $post_id, 'entry', $teachers_names)
этого достаточно - person Happy Coding   schedule 15.02.2017