如何在后端加载特定页面中的脚本和样式?

时间:2017-09-12 作者:user7791702

我是WordPress的新手,所以我正在用主题选项构建我的第一个主题。我在admin中创建的主题选项页面中遇到了问题。在管理区域中,我的主题选项有两种不同的样式。当我将脚本排入管理队列时,问题如下:

当我将脚本排队时,脚本加载到所有管理页面上,我只希望它加载到我的主题选项页面上

如上所述,根据主题选项的两个不同页面,我有两种不同的样式。如何相应地加载样式?

2 个回复
最合适的回答,由SO网友:Owaiz Yusufi 整理而成

很简单,我将逐步解释:

首先,使用WordPress默认的$hook变量,如下所示:

function the_themescripts($hook) {
    echo $hook;
}
add_action( \'admin_enqueue_scripts\', \'dr_theme_options_style_scripts\' );
现在转到admin WP Dashboard(管理WP仪表板)中的custom(自定义)页面,在顶部您将看到如下内容toplevel_page_your_theme_page_slug 如果您看不到,请尝试检查元素并查看标记后的内容,复制该内容并像这样使用。

使用$hook 变量在if-else循环中使用它

function the_themescripts($hook) {
  echo $hook;

  if ($hook == \'toplevel_page_your_page_slug\') :
      // enqueue your script/styles here for your first page    
  endif;

  if ($hook == \'your second page slug\' ) :
      // enqueue your script/styles here for your first page
  endif
}
add_action( \'admin_enqueue_scripts\', \'the_themescripts\' );
希望这个解释能有所帮助:)

SO网友:Johansson

要在管理面板中检测当前页面,可以使用名为$pagenow. 看看这个例子:

function my_admin_enqueue() {
    global $pagenow;
    // Get the current page
    if (isset($_GET[\'page\'])) {
        $current_page = $_GET[\'page\'];
    } else {
        $current_page = \'\';
    }
    // Check both current page base and slug
    if( ( $pagenow == \'themes.php\' ) && ( $current_page == \'my-theme-settings\' ) ) {
        // Now enqueue your script and styles here
    }
}
add_action(\'admin_enqueue_scripts\', \'my_admin_enqueue\');

结束

相关推荐