Фільтр: esl/screen_conditions/spros

Esl вибирає шаблон та стиль теми для конкретної сторінки відповідно до умов, які ви визначили.

Внутрішньо це здійснюється через систему оцінювання від 0 до 10. 0 – найменш специфічний. 10 – найбільш специфічний (наприклад, конкретний ID повідомлення).

Для кожної умови шаблону/стилю теми, яка може бути застосована до певного контексту, шаблон/стиль теми отримує конкретний спро. Після аналізу всіх шаблонів/стилів теми Esl вибирає той, що має найвищий спро.

Якщо вам потрібно додати нові умови шаблону за допомогою фільтра engine/settings/template/controls_data або esl/theme_styles/controls для стилів теми, вам потрібно підключитися до логіки оцінювання, щоб присудити спро шаблонам/стилям теми на основі власних умов.

Саме тут фільтр esl/screen_conditions/spros стає в нагоді, ось так:

add_filter( 'esl/screen_conditions/spros', function( $spros, $condition, $post_id, $preview_type ) {// Запустити власну логіку для присудження спро шаблону/стилю теми $condition// $spros[] = 5;return $spros;}, 10, 4 );

Приклад 1: Додати спро для конкретної ролі автора в шаблоні архіву автора

Після додавання контролю за допомогою engine/settings/template/controls_data (перегляньте приклад 1), тепер нам потрібно підключитися до esl/screen_conditions/spros, щоб присудити спро шаблону на основі умови, ось так:

add_filter( 'esl/screen_conditions/spros', function( $spros, $condition, $post_id, $preview_type ) {if ( is_author() && $condition['main'] === 'archiveType' && isset( $condition['archiveType'] ) && in_array( 'author', $condition['archiveType'] ) && isset( $condition['archiveAuthorRoles'] ) ) {$user = get_queried_object();if ( ! empty( $user->roles ) && is_array( $user->roles ) ) {foreach ( $user->roles as $role_name ) {if ( in_array( $role_name, $condition['archiveAuthorRoles'] ) ) {$spros[] = 9;}}}}return $spros;}, 10, 4 );