如何检查当前页面是不是是wordpress中的插件管理面板

Posted

技术标签:

【中文标题】如何检查当前页面是不是是wordpress中的插件管理面板【英文标题】:How to check if the current page is a plugin admin panel in wordpress如何检查当前页面是否是wordpress中的插件管理面板 【发布时间】:2013-12-08 08:51:54 【问题描述】:

我想知道如何检查我当前是否在插件的管理页面中。 我创建了一个带有菜单项的插件,该菜单项显示一个包含此插件使用的一些统计信息的页面,为此,我使用自定义 JQuery 插件,一些 CSS,我永远不会在此页面之外使用。

所以我想知道如何检查这个,是否将插件的样式和 JS 排入队列。

这是我的队列样式代码

function bridge_style_enqueuer() 
   wp_register_style( "bridge_display_style", WP_PLUGIN_URL.'/symfony-bridge/chosen.css');
   wp_register_style( "bridge_display_style_tb", WP_PLUGIN_URL.'/symfony-bridge/bootstrap.min.css');
   wp_enqueue_style( 'bridge_display_style' );
   wp_enqueue_style( 'bridge_display_style_tb' );

add_action( 'admin_init', 'bridge_style_enqueuer' );

我对 Js 也是这样

function bridge_script_enqueuer() 
   wp_register_script( "bridge_script", WP_PLUGIN_URL.'/symfony-bridge/bridge.js', array('jquery'),FASLE, TRUE);
   wp_register_script( "bridge_chosen_script", WP_PLUGIN_URL.'/symfony-bridge/chosen.js', array('jquery'),FASLE, TRUE);
   wp_register_script( "bridge_chosen_script_tb", WP_PLUGIN_URL.'/symfony-bridge/bootstrap.min.js', array('jquery'),FASLE, TRUE);

    wp_enqueue_script( 'bridge_script' );
    wp_enqueue_script( 'bridge_chosen_script' );
    wp_enqueue_script( 'bridge_chosen_script_tb' );

 add_action( 'admin_init', 'bridge_script_enqueuer' );

【问题讨论】:

【参考方案1】:

您可以使用WP Screen API:

$screen = get_current_screen();

if ( in_array( $screen->id, array( 'some_admin_page', 'another_admin_page' ) ) )

    wp_enqueue_script( 'bridge_script' );

请注意,您可以简单地在 initadmin_enqueue_scripts 钩子上注册脚本(就像您所做的那样),并将它们排入“页内”队列,即在 add_menu_page() 的回调函数中。

【讨论】:

非常感谢,这就是我正在寻找的 :)【参考方案2】:

正确的做法是使用add_*_pageadmin_print_scripts-$your_plugin_page

add_action( 'admin_menu', 'add_page_so_20162413' );

function add_page_so_20162413()

    $my_page = add_menu_page( /* etc */ );
    add_action( "admin_print_scripts-$my_page", 'enqueue_so_20162413' );


function enqueue_so_20162413()

    wp_enqueue_script( /* etc */ );
    wp_enqueue_style( /* etc */ );

Diggy's suggestion 是我们在使用此方法时遇到问题时最好的方法。

【讨论】:

【参考方案3】:

你只需要通过钩子admin_enqueue_scripts--http://codex.wordpress.org/Plugin_API/Action_Reference/admin_enqueue_scripts添加js。 顺便说一句,实际上要添加脚本和 CSS,您应该使用 hook wp_enqueue_scripts

【讨论】:

感谢您的建议,但它仍然无法解决我的问题,即如何知道我当前是否在我的插件管理页面中。

以上是关于如何检查当前页面是不是是wordpress中的插件管理面板的主要内容,如果未能解决你的问题,请参考以下文章

如何根据wordpress中的当前帖子自动选择一个值?

如何开发一个WordPress插件

检查当前站点是不是为论坛

WordPress:检查是不是安装了插件(ACF)

wordpress插件bug排查后记(这篇文章是写给自己的)

WordPress:检查插件是不是已安装