Використання 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.