Как подключить style.css в файле function.php?
Я новичок в WordPress. Подключаю свой файл стилей через:
<link rel='stylesheet' href="<?php bloginfo("stylesheet_url")?>"/>
Но если я добавляю CSS через functions.php
с помощью enqueue, это не работает. Почему?
Где моя ошибка?
<?php wp_enqueue_style('style',get_template_directory_uri())?>
Какое решение этой проблемы?

Вы вызываете функцию неправильно. Вы указали только директорию, а не имя файла.
Из кодекса
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' );
}
Остальные параметры являются необязательными.

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()
.

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

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

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

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

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

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

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

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