Posted in wordpress
587
2:14 am, September 27, 2024
 

Wordpress Use the settings API

PHP

<?php
/*
 * Add the admin page
 */
add_action('admin_menu', 'wpse61431_admin_page');
function wpse61431_admin_page(){
    add_menu_page('wpse61431 Settings', 'wpse61431', 'administrator', 'wpse61431-settings', 'wpse61431_admin_page_callback');
}

/*
 * Register the settings
 */
add_action('admin_init', 'wpse61431_register_settings');
function wpse61431_register_settings(){
    //this will save the option in the wp_options table as 'wpse61431_settings'
    //the third parameter is a function that will validate your input values
    register_setting('wpse61431_settings', 'wpse61431_settings', 'wpse61431_settings_validate');
}

function wpse61431_settings_validate($args){
    //$args will contain the values posted in your settings form, you can validate them as no spaces allowed, no special chars allowed or validate emails etc.
    if(!isset($args['wpse61431_email']) || !is_email($args['wpse61431_email'])){
        //add a settings error because the email is invalid and make the form field blank, so that the user can enter again
        $args['wpse61431_email'] = '';
    add_settings_error('wpse61431_settings', 'wpse61431_invalid_email', 'Please enter a valid email!', $type = 'error');   
    }

    //make sure you return the args
    return $args;
}

//Display the validation errors and update messages
/*
 * Admin notices
 */
add_action('admin_notices', 'wpse61431_admin_notices');
function wpse61431_admin_notices(){
   settings_errors();
}

//The markup for your plugin settings page
function wpse61431_admin_page_callback(){ ?>
    <div class="wrap">
    <h2>wpse61431 Settings</h2>
    <form action="options.php" method="post"><?php
        settings_fields( 'wpse61431_settings' );
        do_settings_sections( __FILE__ );

        //get the older values, wont work the first time
        $options = get_option( 'wpse61431_settings' ); ?>
        <table class="form-table">
            <tr>
                <th scope="row">Email</th>
                <td>
                    <fieldset>
                        <label>
                            <input name="wpse61431_settings[wpse61431_email]" type="text" id="wpse61431_email" value="<?php echo (isset($options['wpse61431_email']) && $options['wpse61431_email'] != '') ? $options['wpse61431_email'] : ''; ?>"/>
                            <br />
                            <span class="description">Please enter a valid email.</span>
                        </label>
                    </fieldset>
                </td>
            </tr>
        </table>
        <input type="submit" value="Save" />
    </form>
</div>
<?php }
?>

External Link for Wordpress Use the settings API

View Statistics
This Week
54
This Month
161
This Year
587

No Items Found.

Add Comment
Type in a Nick Name here
 
Other Items in wordpress
Wordpress Use the settings API Wordpress add a sub menu to your plugin Disable the ACF Warning message in wordpress dashboard load a page as a menu in wordpress extract a wordpress menu using its id Wordpress template with fixed sidebar in flex add a page template in a wordpress theme wordpress jquery find and replace option text value wordpress block grid code display a subnav for the current wordpress page using wp_nav_menu to show a custom menu in wordpress get and show the featured image on a wordpress page template link to a custom style sheet in your theme directory wordpress wordpress show page content on template file show post content on template wordpress wordpress add a template file to your theme fix for wordpress requesting ftp login details installing plugins wordpress category list sorting custom adding pagination to custom wp_query add paging to wp list query list items from blog and filter by category name match a category id in wordpress and then add styles just for that id get the current post id from content.php wordpress get the current category id name and slug get the wordpress category name from a category id wordpress adding post custom field meta and displaying it on you template getting the site title vs the page name wordpress get home url add a tag to wordpress header from a plugin list items matching a category title wp register plugin settings admin Create a admin main wordpress custom menu item wordpress show the parent page title with fallback to title Add a post date to your custom wordpress post listing wordpress get page content to display on template page get the stylesheet directory in wordpress theme wordpress register enqueue javascript require jquery wordpress show the post content for use in a template wordpress show posts loop with feature image thumbnail wordpress get site url wordpress advanced custom fields replace shortcode for site url with blog url wordpress check home and not home for banners and things wordpress use a shortcode in php gravity forms wordpress include jquery in theme functions wordpress enqueue slicknav and slick slider wordpress show the page content for use in a template wordpress change domain in config, wordpress domain config wordpress get template directory
Search Code
Search Code by entering your search text above.
Welcome

This is my test area for webdev. I keep a collection of code here, mostly for my reference. Also if i find a good link, i usually add it here and then forget about it. more...

Subscribe to weekly updates about things i have added to the site or thought interesting during the last week.

You could also follow me on twitter or not... does anyone even use twitter anymore?

If you found something useful or like my work, you can buy me a coffee here. Mmm Coffee. ☕

❤️👩‍💻🎮

🪦 2000 - 16 Oct 2022 - Boots
Random Quote
For a long time it had seemed to me that life was about to begin - real life. But there was always some obstacle in the way, something to be gotten through first, some unfinished business, time still to be served, or a debt to be paid. Then life would begin. At last it dawned on me that these obstacles were my life.
Alfred D. Souza
Random CSS Property

border-inline-start-style

The border-inline-start-style CSS property defines the style of the logical inline start border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style, border-right-style, border-bottom-style, or border-left-style property depending on the values defined for writing-mode, direction, and text-orientation.
border-inline-start-style css reference