Використання wp_add_inline_style без таблиці стилів


18

Мені потрібно додати спеціальні вбудовані стилі до заголовка спеціальної теми, яку я створюю. Я натрапив на wp_add_inline_style()функцію, яка працює, але насправді не влаштовує мене, оскільки це залежить від конкретної таблиці стилів. Мені потрібно додати вбудовані стилі в кінці тегу заголовка без залежності таблиці стилів.

Я намагався встановити або таблицю стилів теми, або неіснуючу. В обох випадках це працює, але це трохи брудний злом IMO (або завантажте таблицю стилів теми двічі, або зверніться до файлу привидів ...). Чи є правильний спосіб додавання встроєних стилів в голову, не залежно від таблиці стилів?

Звичайно, я можу додати їх безпосередньо у файл header.php, але цього я хотів би уникнути.

Відповіді:


24

Вам просто потрібно додати стилі безпосередньо до сторінки сторінки. Найкращий спосіб зробити це - використовувати гачок дій 'wp_head', припускаючи, що ви використовуєте тему, яка має гачок. Так:

add_action('wp_head', 'my_custom_styles', 100);

function my_custom_styles()
{
 echo "<style>*{color: red}</style>";
}

Перегляньте кодекс WP, щоб дізнатися більше про гачки дій.


Без проблем! Радий, що можу допомогти.
SkyShab

Якщо (як я) ви хочете додати спеціальний вбудований CSS на сторінки інформаційної панелі, ви можете використовувати admin_headдію.
Той бразильський хлопець

16

Ви можете просто використовувати "манекен" ручку:

wp_register_style( 'dummy-handle', false );
wp_enqueue_style( 'dummy-handle' );

wp_add_inline_style( 'dummy-handle', '* { color: red; }' );

Мені дуже подобається це рішення, тому що мій стиль має ручку, і він описується так, ніби він включений у файл .css
dev_masta

Використання false як джерела wp_register_style також не дозволено згідно документації codex.wordpress.org/Function_Reference/…
16patsle

3

Ваша тема, безумовно, має таблицю стилів за замовчуванням (інакше вона навіть не буде завантажена як тема). Просто використовуйте цю саму таблицю стилів як оброблювач вбудованого CSS. Приклад можна знайти у function.php теми TwentyFifteen (код пропущений для стислості):

function twentyfifteen_scripts() {
    wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );

}
function twentyfifteen_post_nav_background() {
    wp_add_inline_style( 'twentyfifteen-style', $css );
}

1
ОП спеціально попросила іншого способу, ніж використання wp_add_inline_style (). Обидва методи працюють, і я не знайшов жодної вагомої причини перейти з wp_add_inline_style (). Якщо ви знаєте причину, я хотів би знати про це.
SkyShab

Ваше рішення спрацьовує, але воно все ще «хакітне», згідно з тим, що я чув від когось із команди WP одного разу (якщо я не помиляюся); не зовсім моя думка . Я думаю, що ОП думала, що немає способу зробити це, не завантажуючи таблицю стилів двічі або використовуючи гачок-привид. У будь-якому випадку, якщо вони не створюють плагін, завжди є список стилів теми. Я також редагую свою відповідь, оскільки ваше рішення задокументоване в Кодексі. :)
Каспер

Я грав разом з wp_add_inline_style (), і ось що я знайшов. Перевага прикріплення стилів до таблиці стилів полягає в тому, що якщо його вилучити, стилі не будуть надруковані. Але будь-який метод друкує їх накреслено в голові. Тому скажіть, що ви розробник плагінів, а ваші стилі надруковані в голові. Це не має нічого спільного зі стилями теми, і тому, якщо дочірня тема відмовилася від основних стилів теми, щоб використовувати її власні, тепер ваші стилі плагінів не виводяться. Отже, ОП, можливо, вказала ту частину запиту з цієї причини.
SkyShab
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.