Как подключить style.css в файле function.php?

19 авг. 2016 г., 07:52:23
Просмотры: 17.5K
Голосов: 2

Я новичок в WordPress. Подключаю свой файл стилей через:

<link rel='stylesheet' href="<?php bloginfo("stylesheet_url")?>"/>

Но если я добавляю CSS через functions.php с помощью enqueue, это не работает. Почему? Где моя ошибка?

<?php wp_enqueue_style('style',get_template_directory_uri())?>

Какое решение этой проблемы?

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

Вы вызываете функцию неправильно. Вы указали только директорию, а не имя файла.

Из кодекса

wp_enqueue_style( string $handle, string $src = false, array $deps = array(), string|bool|null $ver = false, string $media = 'all' )

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

add_action( 'wp_enqueue_scripts', 'wpse_my_style' );
function wpse_my_style(){
  wp_enqueue_style( 'my-style', get_stylesheet_directory_uri() . 'path/to/your/css' );
}    

Остальные параметры являются необязательными.

19 авг. 2016 г. 08:12:03
9
-1
function wpdocs_style() {
wp_enqueue_style( 'style-name', get_stylesheet_uri() );  // Загружает style.css текущей темы
wp_enqueue_style( 'style-name1', get_teplate_directory_uri() . '/css/custom.css', array('jquery') );   // Загружает пользовательский CSS файл из родительской директории  
wp_enqueue_script( 'script-name1', get_teplate_directory_uri() . '/js/custom.js', array('jquery') );   // Загружает JS файл из родительской директории  
}
add_action( 'wp_enqueue_scripts', 'wpdocs_style' );
             ИЛИ
// Альтернативный вариант - использовать хук wp_head
add_action( 'wp_head', 'wpdocs_style' );

Для работы вышеуказанной функции необходимо добавить <?php wp_enqueue_script("jquery"); ?> (если вы используете действие add_action( 'wp_enqueue_scripts', 'wpdocs_style' );) в файл header.php перед закрывающим тегом </head>.

Каждому стилю нужно присваивать уникальное имя (как я указал style-name, style-name1 и т.д.). Если вы хотите загружать стили из functions.php дочерней темы, используйте get_stylesheet_directory_uri() вместо get_teplate_directory_uri().

19 авг. 2016 г. 08:32:11
Комментарии

Вопрос OP вообще не упоминает jQuery. И вам НЕ следует просто добавлять его в header.php, вы должны подключать его так же, как стили.

ngearing ngearing
19 авг. 2016 г. 08:46:50

get_stylesheet_directory_uri() будет работать и для темы, и для дочерней темы.

bynicolas bynicolas
19 авг. 2016 г. 08:46:52

@Nath Я знаю, что он не упомянул jQuery! Ну и что, если я хочу предоставить дополнительную информацию, которая поможет ему, а также будущим читателям.

Rishabh Rishabh
19 авг. 2016 г. 08:52:03

Хорошо, тогда вам нужно объяснить это лучше. А также предоставить корректную информацию.

ngearing ngearing
19 авг. 2016 г. 08:53:22

@Nath Я показал правильный способ. Я не понимаю, что не так в моем коде! Именно так я обычно делаю, и у меня это работает. Не знаю, почему вы утверждаете, что это неправильно! Вы сказали, что не нужно добавлять в header.php! Если не там, то где? Если у вас есть лучший способ, то разместите ответ, я тоже хотел бы узнать более оптимальное решение.

Rishabh Rishabh
19 авг. 2016 г. 10:16:34

@Rishabh Вы подключаете jQuery точно так же, как и всё остальное. А именно с помощью хука wp_enqueue_scripts. Вы сказали, что для работы вашего кода нужно добавить jQuery в header.php перед </head>. Почему вы так говорите? Это просто неверно. Особенно это не относится к добавлению CSS-файлов. Поэтому если вы хотите предоставить больше информации, чтобы помочь ему и другим, кто будет читать этот ответ, пожалуйста, делайте это так, чтобы не вводить людей в заблуждение. CSS никак не требует jQuery для своей работы. С помощью wp_enqueue_script вы можете указать параметр, который говорит WordPress загружать скрипт в <head> или перед закрывающим </body>.

bynicolas bynicolas
19 авг. 2016 г. 15:38:00

Таким образом, вместо того чтобы добавлять скрипты повсюду, что усложняет отладку и чтение кода, вы можете разместить все скрипты в одном месте и использовать параметр $deps, который указывает WordPress последовательность загрузки скриптов/CSS для соблюдения зависимостей.

bynicolas bynicolas
19 авг. 2016 г. 15:40:09

@bynicolas Понял вашу точку зрения. Но в обновлённом ответе я показал альтернативный способ с хуком wp_head, и в описании указал добавить <?php wp_enqueue_script("jquery"); ?>, но также упомянул, что только если вы не используете хук с wp_head. Так вот, мой второй способ, где я показал хук с wp_head вместо wp_enqueue_scripts, это нормально с вашей точки зрения?

Rishabh Rishabh
19 авг. 2016 г. 16:08:27

Хотя это и работает, я не рекомендовал бы это как стандартную практику. Лучше группировать все ваши скрипты/CSS вместе — так будет проще вам (разработчику) и другим читать и понимать ваш код.

bynicolas bynicolas
19 авг. 2016 г. 17:27:05
Показать остальные 4 комментариев