create_metafields(); $this->create_hook(); } function create_metafields() { $this->metafields = [ // adminz_banner \WpDatabaseHelperV2\Fields\WpField::make() ->kind('input') ->type('wp_media') ->name('adminz_banner') ->label('Banner image') ->adminColumn(true), // banner_height \WpDatabaseHelperV2\Fields\WpField::make() ->kind('input') ->type('text') ->name('banner_height') ->label('Banner height') ->attributes(['placeholder' => '400px']) ->adminColumn(true), // breadcrumb_shortcode \WpDatabaseHelperV2\Fields\WpField::make() ->kind('input') ->type('text') ->name('breadcrumb_shortcode') ->label('Breadcrumb shortcode') ->attributes(['placeholder' => '[adminz_breadcrumb]']) ->adminColumn(false), // adminz_title \WpDatabaseHelperV2\Fields\WpField::make() ->kind('input') ->type('text') ->name('adminz_title') ->label('Title') ->adminColumn(false), // adminz_acf_banner_shortcode \WpDatabaseHelperV2\Fields\WpField::make() ->kind('input') ->type('text') ->name('adminz_acf_banner_shortcode') ->label('ACF banner shortcode') ->adminColumn(false), ]; \WpDatabaseHelperV2\Meta\WpMeta::make() ->post_type($this->post_type) ->label('Adminz Banner') ->fields($this->metafields) ->register(); } function create_hook() { add_action('flatsome_after_header', function () { if ($this->post_type == get_post_type()) { $this->create_html(); } }, 0); } function create_html() { // check banner image $banner = $this->get_banner(); if (!$banner) return; // prepare data $title = $this->get_title(); $height = $this->get_banner_height(); $shortcode = $this->get_shortcode(); echo $this->template($banner, $height, $title, $shortcode); } function template($banner, $height = false, $title = false, $shortcode = false) { ob_start(); ?> [section class="adminz_banner" bg_overlay="rgba(0,0,0,.5)" bg="" bg_size="original" dark="true" height=""] [row class="adminz_banner_row"] [col span__sm="12" span="9" class="adminz_banner_col"]
[/col] [/row] [/section] name ?? '') { return get_queried_object()->name; } if (is_home()) { return get_the_title(get_option('page_for_posts')); } if (is_front_page()) { return get_the_title(get_option('page_on_front')); } return; } function get_shortcode() { $meta_key = 'adminz_acf_banner_shortcode'; $object = adminz_get_object_id(); if (!$object || !isset($object['object_id'])) { return false; } $meta = call_user_func($object['object_type'], $object['object_id'], $meta_key, true); $meta = apply_filters('adminz_acf_banner_shortcode', $meta, $object); if ($meta) { return $meta; } return false; } } /* EXAMPLE $sa = new \Adminz\Helper\FlatsomeAcfBanner; $sa->init(); */ /* customize example add_filter( 'adminz_banner', function ($meta, $object) { if ( is_product_category() ) { if ( !get_term_meta( $object['object_id'] ?? '', 'adminz_banner', true ) ) { $shop_page_id = wc_get_page_id( 'shop' ); return get_post_meta( $shop_page_id, 'adminz_banner', true ); } } if ( is_product() ) { if ( !get_post_meta( $object['object_id'] ?? '', 'adminz_banner', true ) ) { $shop_page_id = wc_get_page_id( 'shop' ); return get_post_meta( $shop_page_id, 'adminz_banner', true ); } } return $meta; }, 10, 2 ); add_filter( 'adminz_title', function ($meta, $object) { if ( is_product_category() ) { if ( !get_term_meta( $object['object_id'] ?? '', 'adminz_title', true ) ) { $shop_page_id = wc_get_page_id( 'shop' ); return get_the_title( $shop_page_id ); } } if ( is_product() ) { if ( !get_post_meta( $object['object_id'] ?? '', 'adminz_title', true ) ) { $shop_page_id = wc_get_page_id( 'shop' ); return get_the_title( $shop_page_id ); } } return $meta; }, 10, 2 ); add_filter( 'adminz_banner_height', function ($meta, $object) { return '300px'; }, 10, 2 ); */