Ich habe eine benutzerdefinierte Metabox, die ich erstellt und auf meiner Website für eine Weile verwendet habe, aber es gibt ein bisschen ein Problem mit, wie es speichert. Es neigt dazu, ziemlich volatil zu sein, was bedeutet, dass beim Backup mit XML oder Bulk-Editing immer die Daten verloren gehen. Wordpress Custom Metabox Checkbox Speichern Problem
Im Folgenden ist der Code, den ich für das Kontrollkästchen verwenden und sie speichern
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');
Gibt es eine Möglichkeit, dieses Problem zu verhindern, oder ist es nur etwas, das mit werden muss behandelt, wenn Check Speichern -Boxen?
Ich habe ein bisschen von einem Hack aussortiert, der für jetzt funktioniert, aber wann immer ich Änderungen an den Check-Boxen vornehmen muss (was ziemlich oft von der Art ist, wie sie benutzt werden), habe ich ein paar Codezeilen auskommentieren, die Änderung vornehmen und dann die Zeilen des Codes unkommentieren, und es ist ein bisschen unkonventionell.
Meistens muss ich es beim Backup und Wiederherstellen (auf meiner Backup/Produktions-Website) arbeiten lassen.
Das scheint gut zu funktionieren, um die schnelle Bearbeitung zu verhindern, aber ich habe noch mit Sicherungen zu testen, aber ich werde hier kommentieren, wenn ich weitere Fragen habe. Danke für die Hilfe :) –