Ich habe einen benutzerdefinierten Post-Typ mit einem Metabox-Datum von und Datum erstellt.Speichern Sie benutzerdefinierte Post-Meta, die Daten nicht speichern
Individuelle Post Art Schöpfung mit der Call-Back-Funktion von add_events_metaboxes
function event_list_init(){
$labels = array(
'name' => _x('Events', 'post type general name'),
'singular_name' => _x('Event', 'post type singular name'),
'menu_name' => _x('Events List', 'admin menu'),
'name_admin_bar' => _x('Events List', 'add new on admin bar'),
'add_new_item' => __('Add New Event'),
'new_item' => __('New Event'),
'edit_item' => __('Edit Event'),
'view_item' => __('View Event'),
'all_items' => __('All Events'),
'search_items' => __('Search Events'),
'not_found' => __('No Events found.'),
'not_found_in_trash' => __('No Events found in Trash.')
);
$args = array(
'labels' => $labels,
'description' => __('Create Events'),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array('slug' => 'event'),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => true,
'menu_position' => 6,
'register_meta_box_cb' => 'add_events_metaboxes',
'menu_icon' => 'dashicons-calendar-alt',
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments')
);
register_post_type('events',$args);
}
add_action('init','event_list_init');
hier ist die Rückruffunktion, die eine Klasse instanziiert die metabox zu erstellen und veröffentlichen Daten über die Aktion Haken save_post
function add_events_metaboxes(){
new eventsListMetaBox();
}
class eventsListMetaBox{
/*
* Constructor that creates the meta box
*/
public function __construct(){
/**
* Render and Add form meta box
*/
add_meta_box('wpt_events_date', 'Events Date', array($this, 'fisa_events_date'), 'events', 'side', 'high');
/**
* Save Date from and to as meta key
*/
add_action('save_post',array($this, 'fisa_events_date_save'),1,2);
}
/**
* Render Form for Events date
*/
function fisa_events_date() {
global $post;
// Add an nonce field so we can check for it later.
wp_nonce_field('events_date_fromto', 'events_datefromto_nonce');
// Echo out the field
echo '<label for="_fisa_date_from">Date From</label>';
echo '<input id="fisa-event-datefrom" type="text" name="_fisa_date_from" class="widefat" />';
echo '<br/><br/>';
echo '<label for="_fisa_date_to">Date To</label>';
echo '<input id="fisa-event-dateto" type="text" name="_fisa_date_to" class="widefat" />';
}
/**
* Meta key actual database insertion
*/
function fisa_events_date_save($post_id){
/**
* Check if nonce is not set
*/
// if (!isset($_POST['events_datefromto_nonce']))
// return $post_id;
//
// $nonce = $_POST['events_datefromto_nonce'];
// /**
// * Verify that the request came from our screen with the proper authorization
// */
// if(!wp_verify_nonce($nonce,'events_date_fromto'))
// return $post_id;
//
// //Check the user's permission
//
// if(!current_user_can('edit_post',$post_id))
// return $post_id;
//Prepare and sanitize the data before saving it
$events_date = array(
sanitize_text_field($_POST['_fisa_date_from']),
sanitize_text_field($_POST['_fisa_date_to'])
);
update_post_meta($post_id, '_fisa_events_date', $events_date);
}
}
speichern
Mein Problem ist, kann ich nicht sehen _fisa_events_date
Metaschlüssel in postmeta
Tabelle von WordPress.Kann jemand bitte zeigen, was ich verpasst habe oder was soll ich tun können, um es zu speichern?
Haben Sie die Meta-Box angezeigt, um zu sehen in der Lage, wenn Sie einen Beitrag dieser Art bearbeiten? – Stiliyan
@Stiliyan Ja. Ich sehe es. Das einzige Problem ist, dass es die Daten nicht speichert. Deshalb habe ich in meinem Beitrag die Überprüfung von Nonce als Kommentar gemacht, nur um zu versuchen, die Daten direkt zu speichern. –
@jameswartlopez Ist es möglich, dass Sie Ihre Metaboxen nicht mit add_action ('admin_init', 'add_events_metaboxes') registriert haben; '? Ich bin erfolgreich in der Lage, '_fisa_events_date' mit dem Rest Ihres Codes nach dem Hinzufügen dieser Anweisung zu speichern. – Stiliyan