-
-
Save EnvatoWP/1582533 to your computer and use it in GitHub Desktop.
| <?php | |
| /* | |
| * Plugin Name: EnvatoWP Bug Hunt One | |
| * Plugin URI: https://gist.github.com/ | |
| * Description: Bug Hunt One - Find all the bugs in this basic plugin | |
| * Version: 0.1 | |
| * Author: EnvatoWP | |
| * Author URI: http://envatowp.github.com/ | |
| * License: GPL2 | |
| */ | |
| function bhone_add_menu() | |
| { | |
| $bhone_settings_page = add_plugins_page( | |
| __( 'Bug Hunt One Settings' ), | |
| __( 'Bug Hunt One' ), | |
| 'manage_options', | |
| 'bhone-settings', | |
| 'bhone_settings_page' | |
| ); | |
| } | |
| function bhone_settings_page() | |
| { | |
| ?> | |
| <div class="wrap"> | |
| <div class="icon32" id="icon-options-general"></div> | |
| <h2><?php _e( 'EnvatoWP Bug Hunt One Settings' ); ?></h2> | |
| <form action="options.php" method="post"> | |
| <?php settings_fields( 'bhone_settings' ); ?> | |
| <?php do_settings_sections( 'bhone_settings_page' ); ?> | |
| <p class="submit"> | |
| <input name="Submit" type="submit" class="button-primary" value="<?php esc_attr_e( 'Save Changes' ); ?>" /> | |
| </p> | |
| </form> | |
| </div> | |
| <?php | |
| } | |
| function bhone_register_settings() | |
| { | |
| register_setting( | |
| 'bhone_settings', | |
| 'bhone_settings', | |
| 'bhone_settings_sanitize' | |
| ); | |
| add_settings_section( | |
| 'bhone_settings_section', | |
| __( 'Bug Hunt One Settings' ), | |
| 'bhone_settings_output', | |
| 'bhone_settings_page' | |
| ); | |
| add_settings_field( | |
| 'bhone_setting_example', | |
| __( 'Bug Hunt One Example Setting' ), | |
| 'bhone_setting_example_output', | |
| 'bhone_settings_page', | |
| 'bhone_settings_section' | |
| ); | |
| } | |
| function bhone_settings_output() | |
| { | |
| echo '<p>These are example settings for Bug Hunt One.</p>'; | |
| } | |
| function bhone_setting_example_output() | |
| { | |
| $options = get_option( 'bhone_settings' ); | |
| echo '<input name="bhone_settings[setting_example]" id="bhone_setting_example" type="checkbox" value="1" class="code" ' . checked( 1, $options["setting_example"], false ) . ' /> An example option for Bug Hunt One'; | |
| } | |
| function bhone_settings_sanitize( $input ) | |
| { | |
| $options = get_option( 'bhone_settings' ); | |
| $options['setting_example'] = trim( $input['setting_example'] ); | |
| return $options; | |
| } | |
| add_action( 'admin_menu', 'bhone_add_menu' ); | |
| add_action( 'admin_init', 'bhone_register_settings' ); |
@mordauk ;)
And thanks @paulruescher, that leaves one bug left!
Line 2: the docBlock should start with /**, no?
Not really a bug, per se...
@contrastlogic Convention says you're correct there, but no, that's not the last bug.
Line 41: has a random <?php there lol
Line 82: "trim( $input['setting_example'] );" NOT "trim( $options['setting_example'] );" ;)
Done! Thanks, @johnnypea
@ManiSingh that's not so random, it breaks out on Line 25 :)
$options['setting_example'] = trim( isset( $input['setting_example'] ) );
@EnvatoWP sorry I might be a bit of a noob right now lol but shouldn't each opening tag have a closing one? I count 4 <?php and only 3 closing tags.
@ManiSingh you don't have to put PHP closing tag in the end of the file http://framework.zend.com/manual/en/coding-standard.php-file-formatting.html
Solution posted!
@ManiSingh ah I see what you mean, if you look at Line 32, that's where the missing closing tag is ;)
@johnnypea and @EnvatoWP thanks for clearing that up for me!
Line 18 still has spelling. Shouldn't it be 'bhone_settings'
better yet $options['setting_example'] = trim( intval( $input['setting_example'] ) );
@owldesign No, but I probably should've used a less ambiguous name for the menu slug there.
@paulruescher Yes! Great suggestion.
@EnvatoWP - oh shoot, you're right. I wasn't sure there was an add_plugins_page(), and I did find it in the codex (somehow?), so I thought it was a bug :P