我正在學習如何向帖子添加元框。我想創建一組帶有文本輸入和多個checbox的metabox。現在,複選框就像這樣放在那裏,但最終它們將通過帶有來自其他地方的內容的foreach循環生成,所以對於我給它們的名稱如條目[0],條目[1]等是很重要的。他們必須通過循環來保存,因爲我不知道會產生多少。在Wordpress中保存來自多個複選框元框的數據
這是我到目前爲止有:
// 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);'to保存它 –
我想弄清楚到底什麼是元鍵,前兩個我看到他們使用的輸入字段的名稱是這樣的: 'update_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); ' 你能否在這裏擺脫一些光? – oneday
'update_post_meta($ post_id,'entry',$ teachers_names)'This is sufficient –