Как удалить все стили для определенного шаблона страницы?

10 окт. 2015 г., 04:50:42
Просмотры: 17.9K
Голосов: 5

Я знаю, как создавать дочерние темы и шаблоны страниц. У меня есть дочерняя тема Salient под названием Salient-Child и шаблон страницы blankPage.php.

Для всех страниц, использующих этот шаблон, я хочу, чтобы вообще не загружались CSS стили.

Я знаю о функциях wp_register_script, wp_deregister_script, wp_deregister_style, wp_dequeue_style и других, но не уверен, где и как их использовать.

Я пробовал добавлять некоторые из этих функций непосредственно в blankPage.php, а также редактировал functions.php. Пробовал использовать условие с if(is_page_template('blankPage.php')){...}.

Буду благодарен за любые подсказки.

Спасибо!

0
Все ответы на вопрос 2
2
13

Вы можете удалить определенные стили и скрипты для конкретного шаблона страницы, как показано ниже. Добавьте код в файл functions.php вашей текущей темы. Чтобы увидеть список всех JS и CSS, вы можете использовать плагин, например: https://wordpress.org/plugins/debug-bar-list-dependencies/

/**
 * Удаление определенных JavaScript-скриптов.
 */
function se_remove_script() {
    if ( is_page_template( 'blankPage.php' ) ) {
        wp_dequeue_script( 'some-js' );
        wp_dequeue_script( 'some-other-js' );
    }
}

add_action( 'wp_print_scripts', 'se_remove_script', 99 );

/**
 * Удаление определенных таблиц стилей.
 */
function se_remove_styles() {
    if ( is_page_template( 'blankPage.php' ) ) {
        wp_dequeue_style( 'some-style' );
        wp_dequeue_style( 'some-other-style' );
    }
}

add_action( 'wp_print_styles', 'se_remove_styles', 99 );

Вы можете удалить все стили и скрипты сразу для конкретного шаблона страницы, как показано ниже. Добавьте код в файл functions.php вашей текущей темы.

/**
 * Удаление всех JavaScript-скриптов.
 */
function se_remove_all_scripts() {
    global $wp_scripts;
    if ( is_page_template( 'blankPage.php' ) ) {
        $wp_scripts->queue = array();
    }
}

add_action( 'wp_print_scripts', 'se_remove_all_scripts', 99 );

/**
 * Удаление всех таблиц стилей.
 */
function se_remove_all_styles() {
    global $wp_styles;
    if ( is_page_template( 'blankPage.php' ) ) {
        $wp_styles->queue = array();
    }
}

add_action( 'wp_print_styles', 'se_remove_all_styles', 99 );
10 окт. 2015 г. 05:33:17
Комментарии

Ваша функция se_remove_all_styles выглядит правильной для того, что мне нужно, но когда я попробовал её, она удалила все стили со ВСЕХ страниц, независимо от шаблона. Я не понимаю почему, учитывая что там есть условие "If". Есть идеи как отладить почему это происходит у меня? Спасибо!

Ryan Ryan
12 окт. 2015 г. 01:40:59

Вы указываете правильный путь к файлу шаблона внутри условия if?

Subharanjan Subharanjan
12 окт. 2015 г. 04:53:19
0
<p>Кажется, я решил проблему, и это было так просто, что я потрясён, что раньше никто об этом не упоминал.</p>
<p>Сначала я удалил всю свою дочернюю тему, чтобы начать с чистого листа.</p>
<p>Затем я использовал <a href="a0">https://wordpress.org/plugins/one-click-child-theme/</a> чтобы создать совершенно новую дочернюю тему Salient.</p>
<p>Потом, в меню <strong>Внешний вид > Редактор</strong>, я просмотрел файл <code>functions.php</code> и заметил, что там уже были предустановлены <code>add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );</code> и <code>function theme_enqueue_styles()</code>.</p>
<p>И я просто обернул содержимое функции в <code>if ( !is_page_template( 'rawHtmlPage.php' ) ) { ...}</code>.</p>
12 окт. 2015 г. 02:11:34