Как я могу использовать IS_Page () внутри плагина?
-
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 );
.