잠시 동안 만든 적이 있고 내 웹 사이트에서 사용하고있는 맞춤 메타 보톡스가 있지만 저장 방법에 문제가 있습니다. 그것은 다소 휘발성이있는 경향이 있습니다. 즉, xml 또는 대량 편집으로 백업 할 때 항상 데이터가 손실됩니다. Wordpress Custom Metabox 체크 박스 저장 문제
다음
는 발생하지이 문제를 방지하기 위해 어떤 방법이 있나요 내가 체크 박스에 사용하고 그것을function member_page_featured_meta() {
add_meta_box('member_page_meta', __('Page Template (if default, select none)', 'member_page_textdomain'), 'member_page_meta_callback', 'page', 'side', 'low');
}
add_action('add_meta_boxes', 'member_page_featured_meta');
/**
* Outputs the content of the meta box
*/
function member_page_meta_callback($post) {
$values = get_post_meta($post->ID);
$check = isset($values['member_box_check']) ? esc_attr($values['member_box_check'][0]) : '';
wp_nonce_field(basename(__FILE__), 'member_page_nonce');
$member_page_stored_meta = get_post_meta($post->ID);
?>
<p>
<div class="member_page-row-content">
<label for="featured-checkbox">
<input type="checkbox" name="featured-checkbox" id="featured-checkbox" value="yes" <?php if (isset ($member_page_stored_meta['featured-checkbox'])) checked($member_page_stored_meta['featured-checkbox'][0], 'yes'); ?> />
<?php _e('Member Page', 'member_page_textdomain')?>
</label><br />
<label for="list-checkbox">
<input type="checkbox" name="list-checkbox" id="list-checkbox" value="yes" <?php if (isset ($member_page_stored_meta['list-checkbox'])) checked($member_page_stored_meta['list-checkbox'][0], 'yes'); ?> />
<?php _e('Home List', 'member_page_textdomain')?>
</label><br />
</div>
</p>
<?php
}
/**
* Saves the custom meta input
*/
function member_page_meta_save($post_id) {
// Checks save status - overcome autosave, etc.
$is_autosave = wp_is_post_autosave($post_id);
$is_revision = wp_is_post_revision($post_id);
$is_valid_nonce = (isset($_POST[ 'member_page_nonce' ]) && wp_verify_nonce($_POST[ 'member_page_nonce' ], basename(__FILE__))) ? 'true' : 'false';
// Exits script depending on save status
if ($is_autosave || $is_revision || !$is_valid_nonce) {
return;
}
// Checks for input and saves - save checked as yes and unchecked at no
//This line of code is my hack (just keeps the boxes from saving pretty much)
//if (!empty($_POST['featured-checkbox']) && !empty($_POST['list-checkbox'])) {
if(isset($_POST[ 'featured-checkbox' ])) {
update_post_meta($post_id, 'featured-checkbox', 'yes');
} else {
update_post_meta($post_id, 'featured-checkbox', 'no');
};
if(isset($_POST[ 'list-checkbox' ])) {
update_post_meta($post_id, 'list-checkbox', 'yes');
} else {
update_post_meta($post_id, 'list-checkbox', 'no');
};
// (bracket ending the first if statement) }
}
add_action('save_post', 'member_page_meta_save');
을 저장 코드 또는 체크를 저장할 때 처리되어야 뭔가있다 - 박스?
지금 작업하고있는 약간의 해킹을 정리했지만 체크 박스를 변경할 필요가있을 때마다 (사용 방법의 특성에 따라 상당히 자주 변경됨) 나는 몇 줄의 코드를 주석 처리하고, 변경을 가한 다음 코드 줄을 주석으로 제거하고 약간 비 독점적입니다.
백업 할 때 및 복원 할 때 (백업/제작 웹 사이트에서) 주로해야합니다.
빠른 편집 지우기를 방지하기 위해 정상적으로 작동하는 것으로 보입니다. 그러나 아직 백업으로 테스트하지는 않았지만 추가 질문이 있으면 여기에 의견을 말합니다. 도와 주셔서 감사합니다 :) –