无法将样式表和脚本加载到插件设置页

时间:2018-08-18 作者:Vijay Chavda

我的主插件文件中有以下代码:

<?php
/*
Plugin Name: Awesome Slide Show
*/

    add_action(\'admin_head\', \'wp_ss_plugin_include\');
    add_action(\'admin_menu\', \'wp_ss_plugin_add_menu\');

    function wp_ss_plugin_include() {
        echo "<style>";
        require \'settings/style.css\';
        echo "</style>";

        echo "<script>";
        require \'settings/script.js\';
        echo "</script>";
    }

    function wp_ss_plugin_add_menu() {
        add_menu_page("Slide Show", "Slide Slow", "manage_options", "wp-ss-plugin", 
            function () {
                require "settings/index.php";
            }
        );
    }

?>
设置目录中有三个文件,即索引。php,风格。css和脚本。js。这些文件的内容取自here.

首先,我应该在插件的设置页面中获得一个图像幻灯片。但是,我无法移动幻灯片(上一张和下一张)。我尝试调试,发现click事件不起作用。(请查看上面链接中的代码)。我认为样式表正在加载,但脚本没有加载。

其次,我想知道我用来加载脚本和样式的技术是否正确。我是从Hello Dolly 直接呼应其风格的插件。这是正确的方式吗?或者,为我的插件构建自己的设置页面(包含所有样式、脚本和所有内容)的最佳实践是什么?我找不到如何为Plugins settings page. 我只找到了Themes settings page.

1 个回复
SO网友:Vijay Chavda

方法是使用wp_enqueue_style()wp_enqueue_script 功能时admin_enqueue_scripts 挂钩。

将样式和脚本注册到wp_register_stylewp_register_script 分别是可选的,但有一些很好的优点here.

以下是工作脚本:

<?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\');



?>
我面临的另一个问题是,即使在脚本和样式正常工作之后,jQuery也无法正常工作。在使用wp_register_script.

结束