しばらく私のウェブサイトで作成して使っているカスタムメタボックスがありますが、保存方法には少し問題があります。むしろ揮発性の傾向があります。つまり、XMLまたは一括編集でバックアップすると、データが失われます。 Wordpressカスタムメタボックスチェックボックス問題を保存する
次
が起きてからこの問題を防ぐためにどのような方法があります私は、チェックボックスのために使用し、それを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');
を保存するためのコードであるか、チェックを保存するときに対処する必要があるだけで何かであります - 箱?
私は今のところ動いているハックを選別しましたが、チェックボックスを変更する必要があるときはいつも、その使用方法の性質によってかなりの頻度で行われています。コードのいくつかの行をコメントアウトし、変更してから、コード行をコメント解除して、これはちょっと変わったことです。
(バックアップ/制作のウェブサイト上で)バックアップとリストアを行うには、ほとんどの場合、バックアップを作成する必要があります。
これはクイック編集のワイプを防ぐために問題なく動作しているようですが、まだバックアップをテストしていませんが、これ以上の質問があればここでコメントします。助けてくれてありがとう :) –