Verwenden der Kontrollkästchen auf der Seite “Plugin-Optionen” für das benutzerdefinierte Plug-in

Ich erstelle mein erstes WordPress-Plugin. Es ist ein einfaches Plugin, das Visual Composer erweitert und Ihnen ermöglicht, die Elementoptionen in VC zu entfernen (siehe Screenshot).

Bildbeschreibung hier eingeben

Auf der Seite “Optionen” des Plugins erstelle ich ein Formular zum Ein- / Ausblenden der Elemente. Hier ist mein Code:

// Going to add a conditional statement here to run this vc_remove_element function if the checkbox for Row is selected vc_remove_element( "vc_row" ); // Row add_action('admin_menu', 'plugin_admin_settings_tab'); function plugin_admin_settings_tab() { add_options_page('Remove Visual Composer Elements', 'Remove Visual Composer Elements', 'manage_options', 'remove_visual_composer_elements', 'plugin_rvce_options_page'); } ?>  
<input name="Submit" type="submit" value="" />
<?php // ADMIN SETTINGS add_action('admin_init', 'plugin_rvce_admin_init'); function plugin_rvce_admin_init(){ register_setting( 'plugin_options', 'plugin_options', 'plugin_rvce_options_validate' ); add_settings_section('plugin_main', 'Visual Composer Element Settings', 'plugin_rvce_section_text', 'plugin'); add_settings_field('Checkbox Element', 'Row', 'sandbox_checkbox_element_callback', 'plugin', 'plugin_main' ); } function sandbox_checkbox_element_callback() { $options = get_option( 'plugin_options' ); $html = ''; $html .= ''; echo $html; } ?> <?php function plugin_rvce_section_text() { echo '

Remove Visual Composer elements from the interface.

'; } ?> <?php // validate our options function plugin_rvce_options_validate($input) { $options = get_option('plugin_options'); return $options; }

Das Formular sieht am Frontend korrekt aus, aber wenn ich auf das Kontrollkästchen klicke und es speichere, werden die Einstellungen NICHT gespeichert. Ich kann sagen, dass die sandbox_checkbox_element_callback function nicht richtig eingerichtet ist, aber ich kann nicht herausfinden, die richtige Weise, dies einzurichten.

Bilden:

Bildbeschreibung hier eingeben

Kann mir jemand dabei helfen?

Solutions Collecting From Web of "Verwenden der Kontrollkästchen auf der Seite “Plugin-Optionen” für das benutzerdefinierte Plug-in"

Dies sollte es tun:

 // Going to add a conditional statement here to run this vc_remove_element function if the checkbox for Row is selected vc_remove_element( "vc_row" ); // Row add_action('admin_menu', 'plugin_admin_settings_tab'); function plugin_admin_settings_tab() { add_options_page('Remove Visual Composer Elements', 'Remove Visual Composer Elements', 'manage_options', 'remove_visual_composer_elements', 'plugin_rvce_options_page'); add_action('admin_init', 'plugin_rvce_admin_init'); } ?> < ?php function plugin_rvce_options_page() { ?> 
< ?php settings_fields('plugin_options'); ?> < ?php do_settings_sections('plugin'); ?> < ?php submit_button(); ?>
< ?php } ?> < ?php // ADMIN SETTINGS function plugin_rvce_admin_init(){ register_setting( 'plugin_options', 'plugin_options' ); add_settings_section('plugin_main', 'Visual Composer Element Settings', 'plugin_rvce_section_text', 'plugin'); add_settings_field('Checkbox Element', 'Row', 'sandbox_checkbox_element_callback', 'plugin', 'plugin_main' ); } function sandbox_checkbox_element_callback() { $options = get_option( 'plugin_options' ); $checked = ( isset($options['checkbox_example']) && $options['checkbox_example'] == 1) ? 1 : 0; $html = ''; $html .= ''; echo $html; } ?> < ?php function plugin_rvce_section_text() { echo '

Remove Visual Composer elements from the interface.'; } ?> < ?php // validate our options function plugin_rvce_options_validate($input) { $options = get_option('plugin_options'); return $options; }

Sie müssen zuerst den überprüften Wert abrufen und prüfen, ob er an erster Stelle steht. Denn wenn Sie das Kontrollkästchen plugin_options die plugin_options in der database in der Tabelle wp_options nichts. Wenn es nichts ist, müssen Sie $checked auf 0 und 1 setzen. Auch der Name des Eingabefeldes war falsch, und ich habe den Submit Button durch den Standard ersetzt.

Getestet auf zwanzig sechzehn Thema und arbeitete für mich 🙂 Hoffe das hilft.