پرش به محتویات

"Filter: bricks/element/settings"

Bricks 1.5 امکان تغییر تنظیمات عنصر را قبل از رندر شدن اضافه می‌کند.

این به شما امکان می‌دهد محتوای یک المان متنی را به صورت برنامه ریزی شده تغییر دهید یا سبک هایی را بر اساس یک منطق شرطی سفارشی اضافه کنید، مانند:

add_filter( 'bricks/element/settings', function( $settings, $element ) {
    // Add "[online]" text to all the headings elements if the visitor is logged in
    if ( $element->name === 'heading' && is_user_logged_in() ) {
        $settings['text'] .= ' [online]';
    }

    return $settings;
}, 10, 2 );

در صورتی که نیاز به اضافه کردن یک منطق نمایش شرطی عنصر به صورت برنامه‌نویسی دارید، فیلتر bricks/element/render را بررسی کنید.

مثال: تنظیم پویا فیلتر محصول WooCommerce (قیمت) حداکثر قیمت از همه محصولات

bricks-products-filter-max-price-from-all-products.png

add_filter('bricks/element/settings', function( $settings, $element ) {
  // Change the zyjhwa to your element ID
  if( $element->id !== 'zyjhwa' || ! isset( $settings['filters'] ) ) {
    return $settings;
  }

  // Get all products
  $products = wc_get_products(array(
    'status' => 'publish',
    'limit' => -1, // Retrieve all products
  ));

  $highest_price = max(array_map(function ($product) {
    return $product->get_price();
  }, $products));

  foreach( $settings['filters'] as $key => $filter ) {
    if( ! isset( $filter['otherFilter'] ) || $filter['otherFilter'] !== 'price' ) {
      continue;
    }

    $settings['filters'][$key]['sliderMax'] = $highest_price;
  }

  return $settings;
}, 10, 2);