WordPress как на ладони

Не получается отключить стили плагина

У меня дочерняя тема, если это важно. Нужно удалить пару css, подключаемых плагином TM Photo Gallery

    public function add_shortcode_css() {
		$this->enqueue_style( 'font-awesome', 'frontend/font-awesome.min.css' );
	}

Я пробовала убрать из очереди

add_action( 'wp_enqueue_scripts', 'remove_styles', 100 );
function remove_styles() {
wp_dequeue_style( 'font-awesome' );
}

И пробовала отменить регистрацию

add_action('wp_print_styles', 'remove_styles', 100);
function remove_styles() {
wp_deregister_style( 'font-awesome' );
}

Я даже через wp_head пыталась. Результат один: файл продолжает подгружаться.
Стили родительской темы с помощью любого из этих кодов удаляются на ура.

Подскажите, пожалуйста, что я делаю не так?

0
Koxae
6.1 год назад 8
  • 2
    campusboy4752 www.youtube.com/c/wpplus

    Вы пытаетесь удалить скрипт с ID, которого нет в системе. Изучаем код плагина, точнее его класс Media:

    /**
     * Add shortcode css
     *
     * @param array $params
     */
    public function add_shortcode_css() {
    	$this->enqueue_style( 'font-awesome', 'frontend/font-awesome.min.css' );
    	$this->enqueue_style( 'material-icons', 'material-icons.css' );
    	$this->enqueue_style( 'fontello', 'frontend/fontello.css' );
    	$this->enqueue_style( 'lightgallery', 'frontend/lightgallery.css' );
    	$this->enqueue_style( 'style-frontend', 'frontend/style-frontend.css', array( self::PREFIX . 'material-icons' ) );
    	$this->enqueue_style( 'grid', 'frontend/grid.css' );
    }

    Смотрим дальше код метода enqueue_style():

    /**
     * Enqueue style
     *
     * @param type $name
     * @param type $path
     * @param type $parent
     */
    public function enqueue_style( $name, $path, $parent = array(), $version = false ) {
    	if ( empty( $version ) ) {
    		$version = $this->get_version();
    	}
    	// check url path
    	if ( ! preg_match( '/^http/', $path ) ) {
    		$path = TM_PG_CSS_URL . $path;
    	}
    	return wp_enqueue_style( self::PREFIX . $name, $path, $parent, $version );
    }

    Видим, что он добавляет к ID ещё и префикс свой личный self::PREFIX. Узнать ID легко на самом деле. Просто смотрим, как выводится CSS на странице:

    <link rel='stylesheet' id='tm-pg-font-awesome-css'  href='http://wp-test.ru/wp-content/plugins/tm-photo-gallery/media/css/frontend/font-awesome.min.css' type='text/css' media='all' />

    Тут в ID tm-pg-font-awesome-css всё как раз и указано, только что WordPress всегда при выводе к нему добавляет -css. Резумирруя, ID стиля tm-pg-font-awesome.

    Потому удалять надо так:

    add_action( 'wp_enqueue_scripts', function () {
    	wp_dequeue_style( 'tm-pg-font-awesome' );
    } );
    Koxae 6.1 год назад

    Огромное спасибо за столько подробный ответ! Естественно, всё получилось. Моя ошибка, что я не посмотрела в код страницы, будучи уверенной, что достаточно посмотреть в код плагина. В итоге, я упустила существенные моменты.

    campusboy 6.1 год назад

    Я вот тоже в код плагина заглянул и нашёл что к чему, тут думаю просто сыграл опыт, потому заметил, а Вы нет. Это придёт со временем неизбежно. Насчёт "поглядеть" в готовый html - это я как один из способов написал. Не стоит доверять коду в уже отрендеренной странице. Есть хуки (и темы иногда ими пользуются), чтобы этот ID вообще не выводить (или изменить) (зачем так непонятно, неужели сократить html). Это редкость конечно, потому я им пользуюсь и другим советую. Но ничего точнее кода не скажет, как оно на самом деле smile

    Saitozavisim 4.9 лет назад

    Огненное спасибо!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация