我有以下代码段,用于在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将脚本/样式排入管理员。
尝试一下。希望它能起作用!

10-08 05:48