Banners::get_context_banners()

Summary

Get banners for the current contenxt


Return

(array)


Source

File: src/BigCommerce/Banners/Banners.php

	public function get_context_banners() {
		$enable_banners = get_option( Banners_Settings::ENABLE_BANNERS, false ) === 'yes';

		if ( ! $enable_banners ) {
			return [];
		}

		$banners        = $this->get_banners();
		$page           = $this->get_current_page();
		$current_date   = time();
		$queried_object = get_queried_object();
		$bc_id          = 0;

		if ( is_a( $queried_object,  'WP_Term' ) && in_array( $page, [ self::PAGE_CATEGORY, self::PAGE_BRAND ]) ) {
			$bc_id = (int) get_term_meta( $queried_object->term_id, 'bigcommerce_id', true );
		}

		$banners = array_filter( $banners, function( $banner ) use ( $page, $current_date, $bc_id ) {
			if ( ! $banner['visible'] || $banner['page'] !== $page ) {
				return false;
			}

			if ( $bc_id && $banner['item_id'] !== $bc_id ) {
				return false;
			}

			if ( $banner['date_type'] === self::DATE_TYPE_CUSTOM ) {
				$in_range = $current_date >= $banner['date_from'] && $current_date <= $banner['date_to'];
				if ( ! $in_range  ) {
					return false;
				}
			}

			return true;
		} );

		return array_values( $banners ); // reset keys
	}


User Contributed Notes

You must log in before being able to contribute a note or feedback.