Admin-Option mit anonymer function hinzufügen

Ich habe gerade an einer Methode für meine benutzerdefinierte Post Type PHP Class gearbeitet, um dem Admin Menu eine Submenusseite für die Verwendung in der Vorlage hinzuzufügen.

Die Add-Subpage-Methode ist wie folgt:

/** * Adds a sub menu to the custom post type menu for things like adding options to be stored in the database. * * @since 1.0.0 * @access public * * @param string $title What appears in the browser window's title * @param array $settings What option fields the user wants to add to the options page * @param string $capability (optional) What capabilities the user must have to access page (default is admin) */ public function add_submenu_page( $title, $settings = array(), $capability = 'administrator' ) { // Set variables $post_type = self::uglify( $this->post_type_name ); $menu_title = self::beautify( $title ); $menu_capability = $capability; $parent_slug = 'edit.php?post_type=' . $post_type; $menu_slug = $post_type . '_' . 'menu_' . self::uglify( $title ); $menu_settings = $settings; add_action( 'admin_menu', function() use( $post_type, $parent_slug, $menu_title, $menu_capability, $menu_slug, $menu_settings ) { add_submenu_page( $parent_slug, $menu_title, $menu_title, $menu_capability, $menu_slug, function() use( $post_type, $menu_settings, $menu_title ) { $menu_page_name = self::beautify( $this->post_type_name ) . ' ' . $menu_title; $option_group = $post_type . '_' . self::uglify( $menu_title ) . '_options'; settings_fields( $option_group ); do_settings_sections( $option_group ); echo '
'; echo '

' . $menu_page_name . '

'; echo '
'; echo ''; echo ''; foreach ( $menu_settings as $label => $setting ) { if ( isset( $setting['attributes'] ) ) { $attributes = $setting['attributes']; } else { $attributes = array(); } if ( isset( $setting['select_options'] ) ) { $select_options = $setting['select_options']; } else { $select_options = array(); } $input_id = self::uglify( $menu_page_name ) . '_' . self::uglify( $label ); // Create Label echo ''; echo ''; // Create input element echo ''; echo ''; } echo ''; echo '
'; echo self::add_input_label( $input_id, $label ); echo ''; echo self::add_admin_option_field( $option_group, $input_id, $setting['type'], $attributes, $select_options ); echo '
'; submit_button(); echo '
'; echo '
'; } ); } ); }

Ich habe auch zwei Hilfsmethoden, die das -Element sowie das entsprechende Formularfeld erstellen. Beide functionen in Bezug auf die HTML-Ausgabe, die an den Browser gesendet wird, funktionieren einwandfrei. Der Code für add_admin_option_field lautet wie folgt:

 /** * Builds and HTML form field for use in an admin options page * * @since 1.0.0 * @access public * * @param string $option_group The option group the admin page settings will be stored in WordPress database * @param string $field_id_name The value of the element's id attribute * @param string $field_type The type of form field being created * @param array $attributes (optional) An array of attributes for an input element * @param array $select_options (optional) An array of options for use in a select element * * @return string The form element to be displayed by the browser */ public static function add_admin_option_field( $option_group, $field_id_name, $field_type, $attributes, $select_options ) { // Initialze the form element $form_element = ''; if ( $field_type == 'text' ) { $form_element = ''; } if ( $field_type == 'select' ) { $form_element .= ''; foreach ( $select_options as $option ) { $form_element .= '' . $option . ''; } $form_element .= ''; } if ( $field_type == 'checkbox' ) { $form_element .= ''; } // Register Setting add_action( 'admin_init', function () use ( $option_group, $field_id_name ) { register_setting( $option_group, $field_id_name ); }); return $form_element; } 

Das Problem, das ich habe, ist, dass, während die HTML-Ausgabe korrekt ist, es scheint, dass der Aufruf add_action() nicht add_action() wird. Wenn ich auf der Schaltfläche ” wp_options auf der von wp_options , wechselt das Admin-Menü die Ansichten und das Standardmenü ” Einstellungen” wird hervorgehoben. Das im Inhaltsbereich angezeigte Formular ist für jede Zeile in der Tabelle ” wp_options und für meine benutzerdefinierten Werte ist nichts vorgesehen gefunden werden.

Ich benutze die WP-Codex-Seite Seite zum Erstellen von Optionen als mein Modell, kann aber nicht sehen, wohin ich gehe, da nichts an debug.log gesendet wird, auch wenn ich einen error_log() add_action() innerhalb der add_action() .

Ist das in einer anonymen function nicht möglich oder fehle ich einfach etwas?

Solutions Collecting From Web of "Admin-Option mit anonymer function hinzufügen"