Блог

Разширяване на theme.json за потребителски типове публикации и изход от плъгини: Практическо ръководство

Научете как да прилагате настройките на theme.json към потребителски типове публикации и съдържание от плъгини за последователен дизайн в целия ви WordPress сайт.

Резюме

Много WordPress разработчици създават потребителски типове публикации или плъгини, които извеждат съдържание (напр. препоръки, портфолиа). Въпреки това, theme.json—централната конфигурация за глобални стилове—често игнорира тези персонализирани елементи по подразбиране, което води до несъвместим дизайн. Тази статия ви превежда през регистрирането на потребителски типове публикации, за да наследят стиловете на theme.json, замяната на настройки за конкретни блокове и свързването на изхода от плъгини с основните дизайн токени. Ще получите инструкции стъпка по стъпка, примери от реалния свят като стилизиране на 'Team Member' CPT и предупреждения относно производителността и конфликти с трети страни. Накрая ще можете да гарантирате, че всяко персонализирано съдържание съответства на дефинираната в редактора дизайн система.

Някога създавали ли сте потребителски тип публикация или интегрирали плъгин на трета страна, само за да откриете, че изходът му напълно игнорира красивата дизайн система, която старателно сте конфигурирали в theme.json? Не сте сами. По подразбиране theme.json се прилага само към основните WordPress блокове и регистрираните блокови стилове, оставяйки потребителските типове публикации и съдържанието, генерирано от плъгини, да се оправят сами. Това обикновено води до инлайн CSS, дублиращи се шрифтове или несъответстваща цветова палитра, която нарушава потребителското изживяване. Но има по-добър начин: можете да разширите theme.json, за да обхване тези персонализирани елементи, осигурявайки последователна, поддържаема дизайн система в целия ви сайт. В това ръководство ще покрием четири практически стъпки, за да постигнете това, с примери за код и предупреждения от реалния свят.

Разбиране на обхвата на theme.json

Преди да се потопим, е важно да разберете, че theme.json е концепция на блокови теми. Той дефинира глобални стилове, настройки (като цветови палитри и размери на шрифтове) и специфични за блокове стилове за редактора и фронтенда. Въпреки това, обхватът му е ограничен: контролира само блокове, които изрично декларират поддръжка на свойствата на theme.json чрез register_block_type или по-старата add_theme_support. Потребителските типове публикации, създадени с register_post_type, не наследяват автоматично тези стилове, освен ако не са изградени с блокове или изрично стилизирани.

Стъпка 1: Регистриране на потребителски типове публикации с поддръжка на блоков редактор

Първата стъпка е да се уверите, че вашият потребителски тип публикация използва блоковия редактор. При извикване на register_post_type, задайте 'show_in_rest' => true и включете 'editor' в масива supports. Това активира блоковия редактор за този тип публикация, позволявайки на авторите да използват блокови стилове от theme.json. Например, ето CPT за "Team Member":

function create_team_member_cpt() {
    $args = array(
        'public' => true,
        'show_in_rest' => true,
        'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ),
        'show_in_menu' => true,
        'labels' => array(
            'name' => 'Team Members',
            'singular_name' => 'Team Member',
        ),
        'rewrite' => array( 'slug' => 'team' ),
    );
    register_post_type( 'team_member', $args );
}
add_action( 'init', 'create_team_member_cpt' );

Сега, когато редактирате публикация за член на екипа, ще видите блоковия редактор с глобалните стилове на вашата тема, приложени към основни блокове като Paragraph, Heading и Image. Това често решава повечето проблеми със стиловете. Ако имате нужда от по-фин контрол, продължете към следващата стъпка. За по-задълбочено проучване на изграждането на блокови теми с theme.json, вижте Как да изградите персонализирана блок тема на WordPress с theme.json.

Стъпка 2: Добавяне на персонализирани блокови стилове чрез theme.json

Понякога искате да приложите специфични стилове към всички инстанции на съдържанието на вашия потребителски тип публикация—например, да дадете на целия пост фон или специален падинг. Можете да насочите core/post-content или да обвиете съдържанието си в персонализиран групов блок и да го стилизирате чрез theme.json. Добавете следното към вашия theme.json файл под обекта styles:

{
  "styles": {
    "blocks": {
      "core/post-content": {
        "css": "background-color: var(--wp--preset--color--light); padding: 2rem;"
      }
    }
  }
}

Това ще приложи светъл фон и падинг към съдържанието на всички публикации, включително вашия Team Member CPT. Можете също да дефинирате варианти, специфични за блокове, в settings.blocks, за да предоставите опции за стил в редактора.

Стъпка 3: Използване на персонализирани свойства на theme.json за изход от плъгини

Плъгините често извеждат съдържание чрез шорткодове, уиджети или персонализирани блокове. За да стилизирате тези последователно, използвайте CSS персонализирани свойства, които theme.json генерира. Например, ако вашата тема дефинира основен цвят като --wp--preset--color--primary, можете да го използвате в CSS на вашия плъгин:

.my-plugin-button {
    background-color: var(--wp--preset--color--primary);
    font-size: var(--wp--preset--font-size--medium);
}

Това гарантира, че когато администраторът на сайта промени цветовата палитра в theme.json, бутонът на вашия плъгин се актуализира автоматично. За да бъде това стабилно, винаги използвайте предварително зададените CSS променливи вместо твърдо кодирани стойности. Освен това, ако вашият плъгин регистрира свои собствени блокове, можете да наследите настройките на theme.json, като използвате useSetting в JavaScript или подавате $attributes при PHP рендиране, както е описано в Овладяване на динамични блокове в WordPress.

Стъпка 4: Работа с динамични блокове

За персонализирани блокове, които извеждат динамично съдържание (напр. плъзгач с препоръки), трябва да регистрирате блок с поддръжка на блоков редактор и изрично да го свържете с theme.json. В PHP използвайте register_block_type с $args, които включват 'render_callback' и се уверете, че файлът block.json на вашия блок задава 'supports' => array( 'color' => true, 'typography' => true ). След това в обратната функция можете да получите достъп до глобалните стилове чрез wp_get_global_styles() и да ги приложите. Например:

function render_testimonial_block( $attributes, $content ) {
    $styles = wp_get_global_styles();
    $color = $styles['elements']['link']['color']['text'] ?? '#000';
    return '<div style="color: ' . esc_attr( $color ) . ';">' . $content . '</div>';
}

Този подход гарантира, че вашият персонализиран блок уважава дизайн токените на темата. За повече информация относно регистрирането на блокове, вижте Изграждане на стабилни WordPress плъгини.

Предупреждения

Въпреки че разширяването на theme.json е мощно, внимавайте за следните капани:

  1. Производителност: Добавянето на твърде много персонализирани стилове в theme.json може да натежи файла и да увеличи времето за парсване на CSS. Придържайте се към глобални настройки и използвайте блоково-специфични стилове пестеливо.
  2. Конфликти с плъгини: Някои плъгини нулират или замятат настройките на theme.json. Винаги тествайте с минимален набор от плъгини и помислете за закачане на after_setup_theme, за да приложите отново вашите персонализации.
  3. Класически теми: Ако вашата тема не използва блоковия редактор (т.е. тя е класическа тема), theme.json има ограничен ефект. Помислете за миграция към блокова тема или използване на функцията wp_enqueue_global_styles за зареждане на стиловете.
  4. Кеш на браузъра: Промените в theme.json може да не се появят веднага поради кеширане. Изчистете кеша на браузъра и използвайте версиониране за вашия стилов файл.

Заключение

Към този момент имате ясен план, за да накарате потребителските типове публикации и изходите от плъгини да работят добре с вашата дизайн система на theme.json. Ключът е да регистрирате вашия CPT с поддръжка на блоков редактор, да дефинирате конкретни стилове за блокът със съдържание на публикацията, да използвате CSS персонализирани свойства в изхода от плъгина и да регистрирате вашите персонализирани блокове с правилна интеграция с theme.json. Този подход елиминира несъответствията, намалява поддръжката и дава на администраторите на сайта възможност да контролират визуалния облик от един източник на истина. Започнете да прилагате тези стъпки днес, за да внесете съгласуваност във вашите WordPress проекти.

Sources (5)