Fügen Sie Ihre eigene Einstellungsseite für das Plugin hinzu

Ich verwende das WordPress Plugin Boilerplate, um ein Plugin zu erstellen, und ich habe Probleme beim Ausgeben eines Formulars, damit Benutzer Konfigurationsoptionen für das Plugin eingeben können.

Ich habe die folgenden Methoden für eine class

public function admin_add_menu() { add_menu_page( 'Paypal Me Order', 'Paypal Me', 'manage_options', 'paypal_me_order', array($this, 'admin_display'), 'dashicons-fa-cc-paypal', 20 ); } function admin_init() { register_setting( 'paypal_me_order-group', 'paypal_me_order-option', array( $this , 'sanitize') ); add_settings_section( 'paypal_me_order-section', 'Paypal Me Settings', array( $this, 'admin_section' ), 'paypal_me_order' ); add_settings_field( 'paypal_me_order-link', 'Paypal Me Link', array( $this, 'admn_link_field' ), 'paypal_me_order', 'paypal_me_order-section' ); } function admin_display (){ include plugin_dir_path(__FILE__) . 'partials/paypal_me_order-admin-display.php'; } public function admin_section($args) { include plugin_dir_path(__FILE__) . 'partials/paypal_me_order-admin-section-display.php'; } public function admin_link_field( $args) { include plugin_dir_path(__FILE__) . 'partials/paypal_me_order-link-field.php'; } 

Inside admin_display()

 

Ich bekomme das oberste Menü und die Seite erscheint, aber nicht die “Sektion” oder die “Felder”

Was mache ich hier falsch? Warum funktioniert es nicht?

AKTUALISIEREN

Ich kann die Seite zur Anzeige bringen, aber ich kann das Eingabefeld nicht zum Ausdrucken bringen.

Solutions Collecting From Web of "Fügen Sie Ihre eigene Einstellungsseite für das Plugin hinzu"

Versuche dies. Bitte ändern Sie den Feldnamen mit Ihrem

 < ?php class MySettingsPage { /** * Holds the values to be used in the fields callbacks */ private $options; /** * Start up */ public function __construct() { add_action( 'admin_menu', array( $this, 'add_plugin_page' ) ); add_action( 'admin_init', array( $this, 'page_init' ) ); } /** * Add options page */ public function add_plugin_page() { // This page will be under "Settings" add_options_page( 'Settings Admin', 'My Settings', 'manage_options', 'my-setting-admin', array( $this, 'create_admin_page' ) ); } /** * Options page callback */ public function create_admin_page() { // Set class property $this->options = get_option( 'my_option_name' ); ?> 

My Settings

< ?php // This prints out all hidden setting fields settings_fields( 'my_option_group' ); do_settings_sections( 'my-setting-admin' ); submit_button(); ?>
< ?php } /** * Register and add settings */ public function page_init() { register_setting( 'my_option_group', // Option group 'my_option_name', // Option name array( $this, 'sanitize' ) // Sanitize ); add_settings_section( 'setting_section_id', // ID 'My Custom Settings', // Title array( $this, 'print_section_info' ), // Callback 'my-setting-admin' // Page ); add_settings_field( 'id_number', // ID 'ID Number', // Title array( $this, 'id_number_callback' ), // Callback 'my-setting-admin', // Page 'setting_section_id' // Section ); add_settings_field( 'title', 'Title', array( $this, 'title_callback' ), 'my-setting-admin', 'setting_section_id' ); } /** * Sanitize each setting field as needed * * @param array $input Contains all settings fields as array keys */ public function sanitize( $input ) { $new_input = array(); if( isset( $input['id_number'] ) ) $new_input['id_number'] = absint( $input['id_number'] ); if( isset( $input['title'] ) ) $new_input['title'] = sanitize_text_field( $input['title'] ); return $new_input; } /** * Print the Section text */ public function print_section_info() { print 'Enter your settings below:'; } /** * Get the settings option array and print one of its values */ public function id_number_callback() { printf( '', isset( $this->options['id_number'] ) ? esc_attr( $this->options['id_number']) : '' ); } /** * Get the settings option array and print one of its values */ public function title_callback() { printf( '', isset( $this->options['title'] ) ? esc_attr( $this->options['title']) : '' ); } } if( is_admin() ) $my_settings_page = new MySettingsPage();

Es stellte sich heraus, dass es ein Tipperrors in meinen functionen war. Ich kann jetzt die Einstellungsseite perfekt sehen!