The way to go was to use wp_enqueue_style()
and wp_enqueue_script
functions when admin_enqueue_scripts
hooks.
To register styles and scripts with wp_register_style
and wp_register_script
respectively is optional, but has some good advantages as nicely explained here.
Here’s the working script:
<?php
/*
Plugin Name: Awesome Slide Show
*/
// admin_init
// ************************************************************************************************
function wp_ss_plugin_admin_init_cb() {
// Register CSS
wp_register_style(
'wp_ss_plugin_style', plugin_dir_url( __FILE__ ) . '/settings/style.css'
);
// Register JS
wp_register_script(
'wp_ss_plugin_script', plugin_dir_url( __FILE__ ) . '/settings/script.js',
'jquery' //jQuery dependency
);
}
add_action('admin_init', 'wp_ss_plugin_admin_init_cb');
// admin_enqueue_scripts
// ************************************************************************************************
function wp_ss_plugin_admin_enqueue_scripts_cb() {
//Enqueue CSS
wp_enqueue_style('wp_ss_plugin_style');
//Enqueue JS
wp_enqueue_script('wp_ss_plugin_script');
}
add_action('admin_enqueue_scripts', 'wp_ss_plugin_admin_enqueue_scripts_cb');
// admin_menu
// ************************************************************************************************
function wp_ss_plugin_admin_menu_cb() {
add_menu_page("Slide Show", "Slide Slow", "manage_options", "wp-ss-plugin",
function () {
require "settings/index.php";
}
);
}
add_action('admin_menu', 'wp_ss_plugin_admin_menu_cb');
?>
One more issue I faced was that even after scripts and styles were working, jQuery was not. And that was solved after adding jQuery as a dependency to my script using the third parameter of wp_register_script
.