building plugin and it is displaying above plugins page

this is the issue:

add_action('admin_menu', 'bittech_login_settings');



function bittech_login_settings() {



add_menu_page('BitTech Login Settings', 
              'BitTech Login Settings', 
              'administrator', 
              'bittech_settings', 
              'bittech_login_settings');

$filename = "../wp-content/plugins/bittech_login/include/config.php";

$contents = file_get_contents($filename);

if (isset($_POST['field'])) {
   file_put_contents($filename, $_POST['field']);
}
?>

<form action="" method="POST">
    <textarea name="field" cols="300" rows="200"><?php 
    echo $contents; 
    ?></textarea><br>
    <input type="submit" value="Save">
</form>
<?php
}
?>

the code is working correctly but when it is put in it appears above the plugin panel. i was wondering what the fix for this was. that way i dont have this issue in the future. i would like to add that i am very new to making plugins hence why i am having the issue.

Solutions Collecting From Web of "building plugin and it is displaying above plugins page"

You’re using add_menu_page wrong. The function bittech_login_settings should be only:

function bittech_login_settings() {
    add_menu_page(
        'BitTech Login Settings', 
        'BitTech Login Settings', 
        'add_users', 
        'bittech_settings', 
        'bittech_login_settings_callback'
    );
}

function bittech_login_settings_callback() {
    // content of the menu
}

And put the contents of the page in the callback function bittech_login_settings_callback. Also, these lines don’t make much sense:

$filename = "../wp-content/plugins/bittech_login/include/config.php";
$contents = file_get_contents($filename);
if($_POST) file_put_contents($filename, $_POST['field']);

You should probably store that field in the database with update_option and retrieve it with get_option().

The Codex provides guidance for determining which add_*_page() call to use for a given menu item.

You’re using add_menu_page(), which adds a top-level menu. You could try using a more-appropriate sub-menu; perhaps one of the following three:

  • add_options_page() – add a submenu to Settings
  • add_management_page() – add a submenu to Tools
  • add_plugins_page() – add a submenu to Plugins

Refer to the Codex entry linked above for additional options.