Данные не сохранены.

Я пытаюсь создать страницу параметров для темы WordPress. Мне удается создать страницу, Metaboxes, но когда я отправляю форму, данные не сохраняются. Прежде чем я покажу вам свой код, я указываю, что я использую класс для более простого создания страницы. Возможно, это может помочь вам решить эту проблему.

В этом коде я хотел бы сохранить опцию «слайд». Этот параметр регистрируется с помощью register_setting () и видимым в методе slideshow_metabox (), который отображает форму с полями, которые называются «slide […]».

add_action('admin_menu', 'add_custom_admin_page'); function add_custom_admin_page(){ add_menu_page('CYBER Auto Pièces', 'CYBER Auto Pièces', 'manage_options', 'cyberautopieces', '' ); add_action( 'admin_init', 'cyberautopieces_register_settings' ); } **function cyberautopieces_register_settings() { //register our settings register_setting( 'cyberautopieces-settings', 'slide' ); }** new GeneratePageAdmin ('cyberautopieces','CYBER Auto Pièces','CYBER Auto Pièces', 'manage_options','cyberautopieces'); //Add some metaboxes to the page add_action('add_meta_boxes','cyberautopieces_admin_metaboxes'); function cyberautopieces_admin_metaboxes(){ add_meta_box('slideshow_box','Slideshow','slideshow_metabox','toplevel_page_cyberautopieces','normal','high'); add_meta_box('save_box','Enregistrer','save_metabox','toplevel_page_cyberautopieces','side','high'); } //Define the insides of the metabox function slideshow_metabox(){ var_dump(get_option('slide')); // DISPLAY bool(false) :( ?> <ul id="slideshow_box"> <li> <a class="add-image-slider" href="#"> <div class="images half"> Choisir une image <img src="" alt=""> <input type="hidden" name="slide[img][]"> </div> </a> <div class="text half"> <label><strong>Titre : </strong></label> <input type="text" name="slide[title][]" value="" /> <label><strong>Slogan : </strong></label> <input type="text" name="slide[slogan][]" value="" /> <strong>Situation : </strong> <select id="slide_situation" name="slide[text_position][]"> <option value="left" selected>Gauche</option> <option value="right">Droite</option> </select> </div> <div class="add-delete"> <span class="add">+</span><span class="delete">-</span> </div> </li> </ul> <?php } //Define the insides of the metabox function save_metabox(){ submit_button(); } 

Вот содержимое моего класса GeneratePageAdmin:

 class GeneratePageAdmin { var $hook; var $title; var $menu; var $permissions; var $slug; var $page; /** * Constructor class for the Simple Admin Metabox *@param $hook - (string) parent page hook *@param $title - (string) the browser window title of the page *@param $menu - (string) the page title as it appears in the menuk *@param $permissions - (string) the capability a user requires to see the page *@param $slug - (string) a slug identifier for this page *@param $body_content_cb - (callback) (optional) a callback that prints to the page, above the metaboxes. See the tutorial for more details. */ function __construct($hook, $title, $menu, $permissions, $slug, $body_content_cb='__return_true'){ $this->hook = $hook; $this->title = $title; $this->menu = $menu; $this->permissions = $permissions; $this->slug = $slug; $this->body_content_cb = $body_content_cb; /* Add the page */ add_action('admin_menu', array($this,'add_page')); } /** * Adds the custom page. * Adds callbacks to the load-* and admin_footer-* hooks */ function add_page(){ /* Add the page */ $this->page = add_submenu_page($this->hook,$this->title, $this->menu, $this->permissions,$this->slug, array($this,'render_page'),10); //var_dump($this->page); /* Add callbacks for this screen only */ add_action('load-'.$this->page, array($this,'page_actions'),9); add_action('admin_footer-'.$this->page,array($this,'footer_scripts')); } /** * Prints the jQuery script to initiliase the metaboxes * Called on admin_footer-* */ function footer_scripts(){ ?> <script> postboxes.add_postbox_toggles(pagenow);</script> <?php } /* * Actions to be taken prior to page loading. This is after headers have been set. * call on load-$hook * This calls the add_meta_boxes hooks, adds screen options and enqueues the postbox.js script. */ function page_actions(){ do_action('add_meta_boxes_'.$this->page, null); do_action('add_meta_boxes', $this->page, null); /* User can choose between 1 or 2 columns (default 2) */ add_screen_option('layout_columns', array('max' => 2, 'default' => 2) ); /* Enqueue WordPress' script for handling the metaboxes */ wp_enqueue_script('postbox'); } /** * Renders the page */ function render_page(){ ?> <div class="wrap" id="<?php echo $this->slug; ?>"> <?php screen_icon(); ?> <h2> <?php echo esc_html($this->title);?> </h2> <form method="post"> <?php settings_fields( $this->slug.'-settings' ); ?> <?php do_settings_sections( $this->slug.'-settings' ); ?> <input type="hidden" name="action" value="some-action"> <?php wp_nonce_field( 'some-action-nonce' ); /* Used to save closed metaboxes and their order */ wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?> <div id="poststuff"> <div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>"> <div id="post-body-content"> <?php call_user_func($this->body_content_cb); ?> </div> <div id="postbox-container-1" class="postbox-container"> <?php do_meta_boxes('','side',null); ?> </div> <div id="postbox-container-2" class="postbox-container"> <?php do_meta_boxes('','normal',null); ?> <?php do_meta_boxes('','advanced',null); ?> </div> </div> <!-- #post-body --> </div> <!-- #poststuff --> </form> </div><!-- .wrap --> <?php } } 

Извините за длинный код, но я действительно не знаю, где проблема.

Спасибо вам за помощь 😉