"Filter: bricks/screen_conditions/scores"

Bricks با توجه به شرایطی که شما تعریف کرده اید، سبک قالب و تم را برای یک صفحه خاص انتخاب می‌کند.

در داخل این کار از طریق یک سیستم امتیازدهی از 0 تا 10 انجام می‌شود. 0 کمترین خاص است. 10 که خاص ترین است (به عنوان مثال شناسه پست خاص).

برای هر شرط سبک قالب/موضوع که می‌تواند در زمینه خاصی اعمال شود، سبک قالب/موضوع امتیاز خاصی کسب می‌کند. پس از تجزیه و تحلیل همه قالب ها/سبک های تم، Bricks یکی را انتخاب می‌کند که بالاترین امتیاز را داشته باشد.

اگر نیاز به اضافه کردن شرایط قالب جدید با استفاده از فیلتر builder/settings/template/controls_data یا bricks/theme_styles/controls برای سبک‌های تم دارید، باید به منطق امتیازدهی متصل شوید تا الگوها/سبک‌های تم را بر اساس شرایط سفارشی امتیاز دهید.

اینجاست که فیلتر bricks/screen_conditions/scores مفید است، مانند:

add_filter( 'bricks/screen_conditions/scores', function( $scores, $condition, $post_id, $preview_type ) {
  // Run custom logic to score the template/theme style $condition
  // $scores[] = 5;

  return $scores;
}, 10, 4 );

مثال 1: امتیاز یک نقش نویسنده خاص را در قالب آرشیو نویسنده اضافه کنید

پس از افزودن کنترل با استفاده از builder/settings/template/controls_data (مثال 1 را بررسی کنید)، اکنون باید bricks/screen_conditions/scores را برای امتیاز دادن به الگو بر اساس شرایط، مانند این، قلاب کنیم:

add_filter( 'bricks/screen_conditions/scores', function( $scores, $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'] ) ) {
          $scores[] = 9;
        }
      }
    }
  }

  return $scores;
}, 10, 4 );