php - Add_menu_page not displaying the menu in class based plugin

admin2025-06-02  0

class Cosmo_Games {



public function __construct() {

        add_action('admin_menu', array($this, 'create_plugin_settings_page'));
    }

    public function create_plugin_settings_page() {
        $page_title = 'Game Settings';
        $menu_title = 'Games Plugin';
        $cabability = 'manage_options';
        $slug = 'cg_settings';
        $callback = array($this, 'plugin_settings_page_content');
        $icon = 'dashicons-admin-plugins';
        $position = 100;
        add_menu_page($page_title, $menu_title, $capability, $slug, $callback, $icon, $position);
    }

    public function plugin_settings_page_content() {
        ?>

        <div class="wrap">
            <h2>My Awesome Settings Page</h2>
            <form method="post" action="options.php">
                <?php
                    settings_fields( 'cg_settings' );
                    do_settings_sections( 'smashing_fields' );
                    submit_button();
                ?>
            </form>
        </div> 

        <?php
    }

}

new Cosmo_Games();

For some reason the Games Plugin page is not displaying in the dashboard. Anyone know what I'm doing wrong?

class Cosmo_Games {



public function __construct() {

        add_action('admin_menu', array($this, 'create_plugin_settings_page'));
    }

    public function create_plugin_settings_page() {
        $page_title = 'Game Settings';
        $menu_title = 'Games Plugin';
        $cabability = 'manage_options';
        $slug = 'cg_settings';
        $callback = array($this, 'plugin_settings_page_content');
        $icon = 'dashicons-admin-plugins';
        $position = 100;
        add_menu_page($page_title, $menu_title, $capability, $slug, $callback, $icon, $position);
    }

    public function plugin_settings_page_content() {
        ?>

        <div class="wrap">
            <h2>My Awesome Settings Page</h2>
            <form method="post" action="options.php">
                <?php
                    settings_fields( 'cg_settings' );
                    do_settings_sections( 'smashing_fields' );
                    submit_button();
                ?>
            </form>
        </div> 

        <?php
    }

}

new Cosmo_Games();

For some reason the Games Plugin page is not displaying in the dashboard. Anyone know what I'm doing wrong?

Share Improve this question asked Mar 10, 2019 at 21:01 EliEli 691 gold badge2 silver badges11 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

There's a spelling error on the $capability parameter:

$cabability = 'manage_options';

Here's the working code for the sake of completeness:

class Cosmo_Games {
    public function __construct() {
        add_action('admin_menu', array($this, 'create_plugin_settings_page'));
    }

    public function create_plugin_settings_page() {
        $page_title = 'Game Settings';
        $menu_title = 'Games Plugin';
        $capability = 'manage_options';
        $slug = 'cg_settings';
        $callback = array($this, 'plugin_settings_page_content');
        $icon = 'dashicons-admin-plugins';
        $position = 100;
        add_menu_page($page_title, $menu_title, $capability, $slug, $callback, $icon, $position);
    }

    public function plugin_settings_page_content() { ?>
        <div class="wrap">
            <h2>My Awesome Settings Page</h2>
            <form method="post" action="options.php">
                <?php
                    settings_fields( 'cg_settings' );
                    do_settings_sections( 'smashing_fields' );
                    submit_button();
                ?>
            </form>
        </div><?php
    }
}

new Cosmo_Games();  
转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1748822053a314010.html

最新回复(0)