我有以下代码段,用于在WordPress管理区域内的设置页面上包含样式和Java脚本。我有一个带有单例的类,可用于启动我的管理页面。我除去了所有必要的代码片段,以使其更具可读性。
我遇到的问题是,通过使用以下设置,设置页面上的样式表位于页面底部而不是页面顶部。我可以通过使用其他动作挂钩在标头中获取它,但这会破坏目的。据我所知,我使用的设置与wp_enqueue_style命令描述的设置相同。
使用命令“ wp_enqueue_style()现在可以称为中间页(在HTML主体中)。这将在页脚中加载样式。”如果是这样,那意味着将在页面中间某个地方调用“ admin_print_scripts- *”钩子,而不是在开始时将其放置在页脚中。
有什么想法。我做错了什么?
谢谢你的时间。
这是在functions.php文件中调用单例类的方式
theme::instance( );
这是我用来创建管理页面的类的一部分
class theme {
static public function instance( )
{
is_null( self::$instance ) AND self::$instance = new self;
return self::$instance;
}
public function __construct()
{
add_action( 'admin_menu', array( $this, 'initMenu' ), 10, 0 );
add_action( 'admin_init', array( $this, 'registerAssets' ), 10, 0 );
}
public function registerAssets( )
{
// Styles
wp_register_style( 'cen', 'style.css', array( ), '1.0' );
wp_register_style( 'cen-settings', 'settings.css', array( 'cen' ), '1.0' );
// Scripts
wp_register_script( 'cen', 'settings.js', array( 'jquery' ), '1.0', true );
}
public function initMenu( )
{
// Index page
$index =add_menu_page( 'Cen', 'Cen', 'manage_options', 'cen-index', function (){ require_once( get_template_directory( ) . '/pages/index.php' ); }, get_template_directory_uri() . '/images/icons/logo_16.png', "110.00" );
// Settings page
$settings =add_submenu_page( 'cen-index', 'Cen - Settings', 'cen' ), 'Settings', 'manage_options', 'cen-settings', function (){ require_once( get_template_directory( ) . '/pages/settings.php' ); } );
// Add action for assets on the settings page
add_action( 'admin_print_scripts-' . $settings, array( $this, 'initSettingsPage' ));
}
public function initSettingsPage( )
{
// Styles used
wp_enqueue_style( 'cen' );
wp_enqueue_style( 'cen-settings' );
// Scripts used
wp_enqueue_script( 'jquery-ui-tabs' );
wp_enqueue_script( 'cen' );
}
}
最佳答案
您正在使用的动作钩子admin_print_scripts
用于添加内联脚本,因此强烈建议使用admin_enqueue_scripts
将脚本/样式排入管理员。
尝试一下。希望它能起作用!