Как я могу использовать IS_Page () внутри плагина?

StackOverflow https://stackoverflow.com//questions/22070223

  •  23-12-2019
  •  | 
  •  

Вопрос

Я хочу, чтобы мой плагин зарегистрировать скрипт только на определенной странице.

Например, внутри моего файла плагина я хочу написать что-то вроде этого:

if (is_page()) {
    $pageid_current = get_the_ID();
    $page_slug = get_post($pageid_current)->post_name;

    if ($page_slug == 'articles'){
        wp_register_script('myscript', '/someurl/main.js');
    }
}
.

Но я получаю ошибку:

iS_page назывался неправильно.Условные теги запросов не работают до прогона запроса.До этого они всегда возвращают ложь.Пожалуйста Смотрите отладку в WordPress для получения дополнительной информации.(Это сообщение было Добавлено в версии 3.1.)

Как я могу, внутри плагина, зарегистрируйте скрипт на определенной странице?

Это было полезно?

Решение

is_page() работают только в шаблонах файлов.

И, чтобы использовать его в файлах плагинов, вам нужно использовать его с комбинацией template_redirect Крюк действия.

Этот ключ действий выполняется непосредственно перед WordPress, определяет, какую страницу шаблона загружать.

Так что следующий фрагмент будет работать:

add_action( 'template_redirect', 'plugin_is_page' );

function plugin_is_page() {
    if ( is_page( 'articles' ) ) {
        wp_register_script( 'my-js-handler', '/someurl/main.js', [], '1.0.0', true );
    }
}
.

Другие советы

Вы можете использовать is_page() после перенаправления шаблона, чтобы вам нужно добавить в крючок, как это:

add_action('template_redirect','your_function');
function your_function(){
 if ( is_page('test') ) {
  // do you thing.
 }
}
.

Вы должны зарегистрироваться ваш скрипт, как будто вы хотите, чтобы он работал везде. Вы можете перерегистрировать его после выполнения работы, как это:

function deregister_my_script() {
    if (!is_page('page-d-exemple') ) {
        wp_deregister_script( 'custom-script-1' );
    }
}
add_action('wp_print_scripts', 'deregister_my_script', 100 );
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top