게시물에 metaboxes를 추가하는 방법을 배우고 있습니다. 나는 텍스트 입력과 여러 개의 checboxes로 metaboxes 그룹을 만들고 싶습니다. 지금 당장 체크 박스는 그곳에 놓여 지지만 결국 다른 장소의 내용으로 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');
아무도 도와 주실 수 없습니까? 이제
key = 'entry';
$values_to_save = array();
$new_values = $_POST['entry'];
$existing_values = get_post_meta($post_id, $key, true) ;
if(!empty($existing_values)){
foreach((array) $existing_values as $existing_value){
$values_to_save[] = $existing_value;
}
}
if(!empty($new_values)){
foreach((array) $new_values as $new_value){
$values_to_save[] = $new_value ;
}
}
update_post_meta($post_id, $key, $values_to_save);
데이터가 아래의 코드를 사용 가져올 :
$key = 'entry';
$values = get_post_meta($post_id, $key, true);
foreach((array) $values as $value){
echo $value . '<br>';
}
간단한 메타 키 ..... 데이터를 가져 오려면 'get_post_meta ($ post_ID,'your key ', true);'를 사용하고 데이터를 가져 오려면 update_post_meta ($ post_id, 'your key', $ teachers_names);를 그것을 저장하십시오 –
나는 처음으로 두 사람은 다음과 같은 입력 필드의 이름을 사용하는 참조하십시오 : '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, 'entry', $ teachers_names)'충분하다. –