投稿にメタボックスを追加する方法を学習しています。私はテキスト入力と複数のchecboxesを持つ代謝物のグループを作りたいと思います。今のところ、チェックボックスはそのように置かれていますが、最終的には別の場所からのコンテンツでforeachループによって生成されるため、entry [0]、entry [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');
誰でもお手伝いできますか?
あなたのHTMLコードは次のようにする必要があります
シンプルなメタキーを使用します。 'get_post_meta($ post_ID、'あなたのキー '、真); 'データを取得し、' update_post_meta($ post_id、'あなたのキー '、$ teachers_names); 'それを保存してください –
私は正確に何がメタキーであるかを理解しようとしています。最初の2つは、次のような入力フィールドの名前を使用しています: '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、 'entry []'、$ teachers_names); ' ここにもっと光を当ててください。 – oneday
'update_post_meta($ post_id、 'entries'、$ teachers_names)'これで十分です –