如何检查该页面是否是我的管理员设置页面?

时间:2018-07-28 12:50:00

标签: wordpress

我正在尝试为自定义设置页面加入脚本和样式。我只想在设置页面上排队我的脚本。

我已使用代码段创建了自定义设置页面

add_action( 'admin_menu', 'supernut_shipping_admin_menu' );

function supernut_shipping_admin_menu() {
    add_menu_page( __('Способы доставки'), 'Способы доставки', 'manage_options',
        'supernut/shipping-methods', 'supernut_shipping_admin_page',
        'dashicons-tickets', 6  );
}

我要实现这一目标

add_action('admin_enqueue_scripts', 'supernut_enqueue_admin_scripts_and_styles');
function supernut_enqueue_admin_scripts_and_styles() {
    if  (is_admin('supernut/shipping-methods')) {
        // Enqueue my script and styles
    } 
}

如何查看当前页面是我在admin中的自定义设置页面? if (is_admin('supernut/shipping-methods'))-不起作用。

2 个答案:

答案 0 :(得分:1)

我找到了这段代码here

执行此操作的方法是使用'admin_enqueue_scripts'挂钩对所需文件进行排队。该钩子将通过一个与加载的当前页面相关的$hook_suffix

function my_admin_enqueue($hook_suffix) {
    if($hook_suffix == 'appearance_page_theme-options') {
        wp_enqueue_script('my-theme-settings', get_template_directory_uri() . '/js/theme-settings.js', array('jquery'));
        wp_enqueue_style('my-theme-settings', get_template_directory_uri() . '/styles/theme-settings.css');
        ?>
        <script type="text/javascript">
        //<![CDATA[
        var template_directory = '<?php echo get_template_directory_uri() ?>';
        //]]>
        </script>
        <?php
    }
}
add_action('admin_enqueue_scripts', 'my_admin_enqueue');

答案 1 :(得分:1)

还有另一种方法,它更简单一些,因为我们不需要知道$hook_suffix的名称。相关动作均为here。注意,当我们使用双引号时,PHP将在其中包含变量:"admin_print_styles-$hook_suffix"

add_action('admin_menu', function() {
    $hook_suffix = add_menu_page (
        'Test Hook Suffix',
        'HSuffix',
        'manage_options',
        'hook_suffix',
        function(){ echo '<h1>menu</h1>'; },
        'dashicons-welcome-learn-more',
        6
    );
    add_action("admin_print_styles-$hook_suffix", 'my_admin_css');
    add_action("admin_print_scripts-$hook_suffix", 'my_admin_js');
});

function my_admin_css(){
    wp_enqueue_style('my-theme-css', get_template_directory_uri() . '/test.css');
}
function my_admin_js(){
    wp_enqueue_script('my-theme-js', get_template_directory_uri() . '/test.js', array('jquery'));   
}