подключить скрипты на конкретной странице администратора WordPress - PullRequest
0 голосов
/ 03 октября 2019

Я новичок здесь. У меня есть некоторый код класса, который является частью плагина WordPress. Мне нужно добавить страницу администратора в существующий код, и, следуя кодексу и статье, которую я нашел путем поиска в Google, я с успехом добавил эту страницу. Я хочу загрузить некоторые сценарии только на этой странице администратора, но не могу понять, как этого добиться, каждый найденный пример использует процедурный стиль, и мне нужно интегрировать это в класс.

Я создал два метода, которые будут удерживать создание страницы, один для вызова функции add_menu_page(), а второй - для функции обратного вызова, которая отвечает за отображение содержимого страницы. Я не могу понять, где нужно вызывать хук add_action( 'admin_enqueue_script' ). Вот код, который я имею, любая помощь будет оценена.

// class constuct
public function __construct()
  {
   add_action( 'admin_menu', array( $this, 'initOptionsMenu' ) );
  }
// class method to add the menu page
public function initOptionsMenu()
  {
    $page_title = 'test page';
    $menu_title = 'B Page';
    $capability = 'edit_posts'; // is there any reference for this param?
    $menu_slug = 'test-page';
    $function = array( $this, 'renderMenu' );
    $icon_url = '';
    $position = 26;

    add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
  }

// class method to render the menu page content

public function renderMenu( $hook )
  {
    // the $hook variable will be empty if I do a var_dump() 
    // here I want to enqueue the scripts, is this possible?
    require_once 'test-options.php';
  }

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Вы можете проверить страницу перед постановкой скриптов в очередь, как это.

// add enqueue hook in __construct
public function __construct()
  {
       // admin menu hook
       add_action( 'admin_menu', [$this, 'you_callback'] );

       // page scripts hook
       add_action( 'admin_enqueue_script', [$this, 'admin_page_scripts_function'] )
  }

// hook function where you check menu page before add enqueue scripts
public function admin_page_scripts_function($hook) {

    // Checking the menu page with the menu slug. 
    // You change your-menu-slug-here by the right slug of your menu
    if ( "toplevel_page_your-menu-slug-here" === $hook ) :
        // here you enqueue the scripts
    endif;
}

1 голос
/ 03 октября 2019

Обращаясь к порядку действий администратора WP здесь: https://codex.wordpress.org/Plugin_API/Action_Reference/#Actions_Run_During_an_Admin_Page_Request

admin_menu вызывается раньше admin_enqueue_scripts

, поэтому в вашем методе renderMenu вам будет хорошо admin_enqueue_scripts, поскольку оно будет зарегистрировано до выполнения действия.

public function renderMenu( $hook )
{
    add_action( 'admin_enqueue_scripts', [ $this, 'loadAdminScripts' ] );

    // the $hook variable will be empty if I do a var_dump() 
    // here I want to enqueue the scripts, is this possible?
    require_once 'test-options.php';
}

public function loadAdminScripts()
{
    // enqueue your scripts
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...