From 265b0dc4deeaca5f378645383ee3272dc815aa6e Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Thu, 23 Jan 2020 20:44:40 +0530 Subject: [PATCH 01/15] Add support for sticky ad --- classes/class-admin.php | 28 +++++++++++- classes/class-amp-admanager.php | 77 ++++++++++++++++++++++++++------- 2 files changed, 88 insertions(+), 17 deletions(-) diff --git a/classes/class-admin.php b/classes/class-admin.php index acf4ccf..4378f26 100644 --- a/classes/class-admin.php +++ b/classes/class-admin.php @@ -86,7 +86,7 @@ public function amp_admanager_menu_init() { add_settings_field( 'dfp-network-id', - __( 'DFP Network ID', 'amp-admanager' ), + esc_html__( 'DFP Network ID', 'amp-admanager' ), [ $this, 'get_text_field' ], 'amp-admanager-menu-page', 'amp-admanager-general-settings' @@ -94,11 +94,27 @@ public function amp_admanager_menu_init() { add_settings_field( 'load-amp-resources', - __( 'Load AMP Resources For Non AMP Site', 'amp-admanager' ), + esc_html__( 'Load AMP Resources For Non AMP Site', 'amp-admanager' ), [ $this, 'get_checkbox_field' ], 'amp-admanager-menu-page', 'amp-admanager-general-settings' ); + + add_settings_field( + 'amp_admanager_enable_sticky_ads', + esc_html__( 'Enable Sticky Ads', 'amp-admanager' ), + [ $this, 'get_enable_sticky_ad_checkbox_field' ], + 'amp-admanager-menu-page', + 'amp-admanager-general-settings' + ); + + add_settings_field( + 'amp_admanager_sticky_ad_unit', + esc_html__( 'Sticky adunit name', 'amp-admanager' ), + [ $this, 'get_sticky_adunit_name_field' ], + 'amp-admanager-menu-page', + 'amp-admanager-general-settings' + ); } /** @@ -118,4 +134,12 @@ public function get_checkbox_field() { public function get_text_field() { printf( '', esc_attr( $this->amp_settings['dfp-network-id'] ) ); } + + public function get_enable_sticky_ad_checkbox_field() { + printf( '', checked( $this->amp_settings['amp_admanager_enable_sticky_ads'], '1', false ) ); + } + + public function get_sticky_adunit_name_field() { + printf( '', esc_attr( $this->amp_settings['amp_admanager_sticky_ad_unit'] ) ); + } } diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index 622f6fa..f4364da 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -34,6 +34,8 @@ public function __construct() { */ add_action( 'wp_head', [ $this, 'load_amp_resources' ], 0 ); + add_action( 'wp_footer', [ $this, 'add_sticky_amp_ad' ] ); + } /** @@ -183,21 +185,38 @@ private static function get_amp_ad( $attr ) { */ $ad_arefresh_rate = ( isset( $attr['ad-refresh'] ) && (int) $attr['ad-refresh'] >= 30 ) ? (int) $attr['ad-refresh'] : false; - /** - * amp-ad markup. - */ - $ad_html = sprintf( - '', - esc_attr( $attr['width'] ), - esc_attr( $attr['height'] ), - esc_attr( $media_query ), - esc_attr( $data_slot ), - esc_attr( $targeting_data_json ), - esc_attr( $attr['sizes'] ), - esc_attr( $layout ), - esc_attr( $data_loading_strategy ), - esc_attr( $ad_arefresh_rate ) - ); + if ( ! empty( $attr['sticky'] ) && true === $attr['sticky'] ) { + /** + * amp-sticky-ad markup. + */ + $ad_html = sprintf( + ' ', + esc_attr( $attr['width'] ), + esc_attr( $attr['height'] ), + esc_attr( $media_query ), + esc_attr( $data_slot ), + esc_attr( $targeting_data_json ), + esc_attr( $attr['sizes'] ), + esc_attr( $data_loading_strategy ), + esc_attr( $ad_arefresh_rate ) + ); + } else { + /** + * amp-ad markup. + */ + $ad_html = sprintf( + '', + esc_attr( $attr['width'] ), + esc_attr( $attr['height'] ), + esc_attr( $media_query ), + esc_attr( $data_slot ), + esc_attr( $targeting_data_json ), + esc_attr( $attr['sizes'] ), + esc_attr( $layout ), + esc_attr( $data_loading_strategy ), + esc_attr( $ad_arefresh_rate ) + ); + } return $ad_html; } @@ -430,4 +449,32 @@ public function load_amp_resources() { } } + + /** + * Add amp sticky ad to the footer. + * + * @return void + */ + public function add_sticky_amp_ad() { + + if ( empty( self::$amp_settings['amp_admanager_enable_sticky_ads'] ) || '1' !== self::$amp_settings['amp_admanager_enable_sticky_ads'] ) { + return; + } + + if ( empty( self::$amp_settings['amp_admanager_sticky_ad_unit'] ) ) { + return; + } + + ?> + + self::$amp_settings['amp_admanager_sticky_ad_unit'], + 'desktop-sizes' => '320x50', + 'sticky' => true, + ]; + + self::get_ads( $ad_attr, true ); + } } From 2833e93c20755554db1abe85cfb35f0ace80dbb4 Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Fri, 24 Jan 2020 12:12:35 +0530 Subject: [PATCH 02/15] Add size for all devices --- classes/class-amp-admanager.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index f4364da..d51063a 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -471,6 +471,8 @@ public function add_sticky_amp_ad() { $ad_attr = [ 'ad-unit' => self::$amp_settings['amp_admanager_sticky_ad_unit'], + 'mobile-sizes' => '320x50', + 'tablet-sizes' => '320x50', 'desktop-sizes' => '320x50', 'sticky' => true, ]; From 61e98f36f1fc3b3940639406104e100f7ee5d861 Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Fri, 24 Jan 2020 12:18:04 +0530 Subject: [PATCH 03/15] Fix phpcs --- classes/class-admin.php | 10 ++++++++++ classes/class-amp-admanager.php | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/classes/class-admin.php b/classes/class-admin.php index 4378f26..b7ea4d3 100644 --- a/classes/class-admin.php +++ b/classes/class-admin.php @@ -135,10 +135,20 @@ public function get_text_field() { printf( '', esc_attr( $this->amp_settings['dfp-network-id'] ) ); } + /** + * Prints markup for enable sticky ad checkbox. + * + * @return void + */ public function get_enable_sticky_ad_checkbox_field() { printf( '', checked( $this->amp_settings['amp_admanager_enable_sticky_ads'], '1', false ) ); } + /** + * Prints markup for adunit name text field. + * + * @return void + */ public function get_sticky_adunit_name_field() { printf( '', esc_attr( $this->amp_settings['amp_admanager_sticky_ad_unit'] ) ); } diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index d51063a..2a0ecd8 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -187,7 +187,7 @@ private static function get_amp_ad( $attr ) { if ( ! empty( $attr['sticky'] ) && true === $attr['sticky'] ) { /** - * amp-sticky-ad markup. + * Amp-sticky-ad markup. */ $ad_html = sprintf( ' ', @@ -202,7 +202,7 @@ private static function get_amp_ad( $attr ) { ); } else { /** - * amp-ad markup. + * Amp-ad markup. */ $ad_html = sprintf( '', @@ -466,7 +466,7 @@ public function add_sticky_amp_ad() { } ?> - + // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript Date: Fri, 24 Jan 2020 12:22:10 +0530 Subject: [PATCH 04/15] Fix phpcs ignore comment --- classes/class-amp-admanager.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index 2a0ecd8..5b56cef 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -466,7 +466,10 @@ public function add_sticky_amp_ad() { } ?> - // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript + // Ignoring beacuse cannot enqueue this script as we want custom attributes. + // phpcs:ignore enable + + // phpcs:ignore disable Date: Fri, 24 Jan 2020 12:26:05 +0530 Subject: [PATCH 05/15] Fix phpcs ignore comment --- classes/class-amp-admanager.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index 5b56cef..7512959 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -466,10 +466,8 @@ public function add_sticky_amp_ad() { } ?> - // Ignoring beacuse cannot enqueue this script as we want custom attributes. - // phpcs:ignore enable - - // phpcs:ignore disable + + Date: Fri, 24 Jan 2020 12:53:27 +0530 Subject: [PATCH 06/15] Update sizes for devices --- classes/class-amp-admanager.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index 7512959..60c42b0 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -472,9 +472,9 @@ public function add_sticky_amp_ad() { $ad_attr = [ 'ad-unit' => self::$amp_settings['amp_admanager_sticky_ad_unit'], - 'mobile-sizes' => '320x50', - 'tablet-sizes' => '320x50', - 'desktop-sizes' => '320x50', + 'desktop-sizes' => '600x90,728x90', + 'tablet-sizes' => '320x50,468x60', + 'mobile-sizes' => '320x50,468x60', 'sticky' => true, ]; From 11a3f8f8db8caa9223c4d6ee4ecfbe2d9a2f2b12 Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Fri, 24 Jan 2020 17:52:38 +0530 Subject: [PATCH 07/15] Move sticky ad script to amp-resources template --- classes/class-amp-admanager.php | 5 ----- template-parts/amp-resources.php | 4 ++++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index 60c42b0..0602eb9 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -465,11 +465,6 @@ public function add_sticky_amp_ad() { return; } - ?> - - - self::$amp_settings['amp_admanager_sticky_ad_unit'], 'desktop-sizes' => '600x90,728x90', diff --git a/template-parts/amp-resources.php b/template-parts/amp-resources.php index cc4a807..b6a5cb9 100644 --- a/template-parts/amp-resources.php +++ b/template-parts/amp-resources.php @@ -20,4 +20,8 @@ + + + + From abc1f345d604e1eff4c5dc2e4527f461d84893ba Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Tue, 28 Jan 2020 11:21:14 +0530 Subject: [PATCH 08/15] Add get_sticky_ad method and code optimizations --- classes/class-amp-admanager.php | 56 ++++++++++++++------------------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index 0602eb9..c75bd9e 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -185,37 +185,23 @@ private static function get_amp_ad( $attr ) { */ $ad_arefresh_rate = ( isset( $attr['ad-refresh'] ) && (int) $attr['ad-refresh'] >= 30 ) ? (int) $attr['ad-refresh'] : false; + $layout = ( true === $attr['sticky'] ) ? '' : esc_attr( $layout ); + + $ad_html = sprintf( + '', + esc_attr( $attr['width'] ), + esc_attr( $attr['height'] ), + esc_attr( $media_query ), + esc_attr( $data_slot ), + esc_attr( $targeting_data_json ), + esc_attr( $attr['sizes'] ), + $layout, + esc_attr( $data_loading_strategy ), + esc_attr( $ad_arefresh_rate ) + ); + if ( ! empty( $attr['sticky'] ) && true === $attr['sticky'] ) { - /** - * Amp-sticky-ad markup. - */ - $ad_html = sprintf( - ' ', - esc_attr( $attr['width'] ), - esc_attr( $attr['height'] ), - esc_attr( $media_query ), - esc_attr( $data_slot ), - esc_attr( $targeting_data_json ), - esc_attr( $attr['sizes'] ), - esc_attr( $data_loading_strategy ), - esc_attr( $ad_arefresh_rate ) - ); - } else { - /** - * Amp-ad markup. - */ - $ad_html = sprintf( - '', - esc_attr( $attr['width'] ), - esc_attr( $attr['height'] ), - esc_attr( $media_query ), - esc_attr( $data_slot ), - esc_attr( $targeting_data_json ), - esc_attr( $attr['sizes'] ), - esc_attr( $layout ), - esc_attr( $data_loading_strategy ), - esc_attr( $ad_arefresh_rate ) - ); + $ad_html = '' . $ad_html . ''; } return $ad_html; @@ -284,6 +270,13 @@ public static function get_ads( $attr = [], $echo = false ) { return $ad_html; } + public static function get_sticky_ad( $attr = [], $echo = false ) { + + $attr['sticky'] = true; + + return self::get_ads( $attr, $echo ); + } + /** * Filter sizes for all 3 device type breakpoints. * @@ -470,9 +463,8 @@ public function add_sticky_amp_ad() { 'desktop-sizes' => '600x90,728x90', 'tablet-sizes' => '320x50,468x60', 'mobile-sizes' => '320x50,468x60', - 'sticky' => true, ]; - self::get_ads( $ad_attr, true ); + self::get_sticky_ad( $ad_attr, true ); } } From fbcdbaf904071c6b500898683942d2307e9ebc27 Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Tue, 28 Jan 2020 11:30:52 +0530 Subject: [PATCH 09/15] Add doc block for get_sticky_ad method --- classes/class-amp-admanager.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index c75bd9e..f6eac5c 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -270,6 +270,14 @@ public static function get_ads( $attr = [], $echo = false ) { return $ad_html; } + /** + * Get amp sticky ad html for all the sizes. + * + * @param array $attr shortcode attributes. + * @param boolean $echo whether to echo or return html code. + * + * @return string + */ public static function get_sticky_ad( $attr = [], $echo = false ) { $attr['sticky'] = true; From 569278798bb9bf21c1a83ac65cc8720251898f48 Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Thu, 30 Jan 2020 20:20:35 +0530 Subject: [PATCH 10/15] Add script only if sticky ads enabled --- classes/class-amp-admanager.php | 28 ++++------------------------ template-parts/amp-resources.php | 3 --- 2 files changed, 4 insertions(+), 27 deletions(-) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index f6eac5c..d6fe6f6 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -430,6 +430,10 @@ public function load_amp_resources() { '; // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript + } + // Check if current page is amp page. if ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) { return; @@ -451,28 +455,4 @@ public function load_amp_resources() { } } - /** - * Add amp sticky ad to the footer. - * - * @return void - */ - public function add_sticky_amp_ad() { - - if ( empty( self::$amp_settings['amp_admanager_enable_sticky_ads'] ) || '1' !== self::$amp_settings['amp_admanager_enable_sticky_ads'] ) { - return; - } - - if ( empty( self::$amp_settings['amp_admanager_sticky_ad_unit'] ) ) { - return; - } - - $ad_attr = [ - 'ad-unit' => self::$amp_settings['amp_admanager_sticky_ad_unit'], - 'desktop-sizes' => '600x90,728x90', - 'tablet-sizes' => '320x50,468x60', - 'mobile-sizes' => '320x50,468x60', - ]; - - self::get_sticky_ad( $ad_attr, true ); - } } diff --git a/template-parts/amp-resources.php b/template-parts/amp-resources.php index b6a5cb9..8cadc76 100644 --- a/template-parts/amp-resources.php +++ b/template-parts/amp-resources.php @@ -21,7 +21,4 @@ - - - From 0b0d106bccccfa371a1d02f1dd1f4424232e0d81 Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Thu, 30 Jan 2020 20:27:44 +0530 Subject: [PATCH 11/15] Remove extra new line --- template-parts/amp-resources.php | 1 - 1 file changed, 1 deletion(-) diff --git a/template-parts/amp-resources.php b/template-parts/amp-resources.php index 8cadc76..cc4a807 100644 --- a/template-parts/amp-resources.php +++ b/template-parts/amp-resources.php @@ -20,5 +20,4 @@ - From f581041489afaf899b2af10e18877f172a123d39 Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Fri, 3 Apr 2020 21:07:07 +0530 Subject: [PATCH 12/15] Fix amp validation error for amp-ad layout attribute --- classes/class-amp-admanager.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index d6fe6f6..46b4e6d 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -34,8 +34,6 @@ public function __construct() { */ add_action( 'wp_head', [ $this, 'load_amp_resources' ], 0 ); - add_action( 'wp_footer', [ $this, 'add_sticky_amp_ad' ] ); - } /** @@ -185,10 +183,14 @@ private static function get_amp_ad( $attr ) { */ $ad_arefresh_rate = ( isset( $attr['ad-refresh'] ) && (int) $attr['ad-refresh'] >= 30 ) ? (int) $attr['ad-refresh'] : false; - $layout = ( true === $attr['sticky'] ) ? '' : esc_attr( $layout ); + if ( ! empty( $attr['sticky'] ) && true === $attr['sticky'] ) { + $layout = ''; + } else { + $layout = sprintf( 'layout=%s', $layout ); + } $ad_html = sprintf( - '', + '', esc_attr( $attr['width'] ), esc_attr( $attr['height'] ), esc_attr( $media_query ), From 656ba7b2fd155ae1008983e1a57fef87e0442083 Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Fri, 3 Apr 2020 21:07:19 +0530 Subject: [PATCH 13/15] Modify get_sticky_ad function to use height and width attributes --- classes/class-amp-admanager.php | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index 46b4e6d..f5a410a 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -153,7 +153,12 @@ private static function get_amp_ad( $attr ) { $network_id = ( ! empty( $attr['network-id'] ) ) ? $attr['network-id'] : self::$amp_settings['dfp-network-id']; $data_slot = sprintf( '/%s/%s', $network_id, $attr['ad-unit'] ); - $media_query = self::get_slot_media_query( $attr['min'], $attr['max'] ); + // Add media query only non sticky ads. + if ( empty( $attr['sticky'] ) ) { + $media_query = self::get_slot_media_query( $attr['min'], $attr['max'] ); + } else { + $media_query = ''; + } /** * Encode targeting data for json attribute in amp-ad. @@ -196,7 +201,7 @@ private static function get_amp_ad( $attr ) { esc_attr( $media_query ), esc_attr( $data_slot ), esc_attr( $targeting_data_json ), - esc_attr( $attr['sizes'] ), + esc_attr( $attr['sizes'] ?? '' ), $layout, esc_attr( $data_loading_strategy ), esc_attr( $ad_arefresh_rate ) @@ -282,9 +287,17 @@ public static function get_ads( $attr = [], $echo = false ) { */ public static function get_sticky_ad( $attr = [], $echo = false ) { - $attr['sticky'] = true; - - return self::get_ads( $attr, $echo ); + $attr['sticky'] = true; + $attr['ad-unit'] = esc_attr( self::$amp_settings['amp_admanager_sticky_ad_unit'] ); + $attr['width'] = '728'; // @Todo Create setting fields from adn use height and width from settings. + $attr['height'] = '90'; + $attr['layout'] = 'fixed'; + + if( true === $echo ) { + echo self::get_amp_ad( $attr, $echo ); + } else { + return self::get_amp_ad( $attr, $echo ); + } } /** From b58e5866c4135fdea5f03e1f4eb4540793a3a181 Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Mon, 15 Jun 2020 15:30:21 +0530 Subject: [PATCH 14/15] Add setting fields for height and width for sticky ad --- classes/class-admin.php | 45 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/classes/class-admin.php b/classes/class-admin.php index b7ea4d3..75c309c 100644 --- a/classes/class-admin.php +++ b/classes/class-admin.php @@ -84,6 +84,13 @@ public function amp_admanager_menu_init() { 'amp-admanager-menu-page' ); + add_settings_section( + 'amp-admanager-sticky-ad-settings', + __( 'Sticky ad Settings', 'amp-admanager' ), + '__return_empty_string', + 'amp-admanager-menu-page' + ); + add_settings_field( 'dfp-network-id', esc_html__( 'DFP Network ID', 'amp-admanager' ), @@ -105,7 +112,7 @@ public function amp_admanager_menu_init() { esc_html__( 'Enable Sticky Ads', 'amp-admanager' ), [ $this, 'get_enable_sticky_ad_checkbox_field' ], 'amp-admanager-menu-page', - 'amp-admanager-general-settings' + 'amp-admanager-sticky-ad-settings' ); add_settings_field( @@ -113,7 +120,23 @@ public function amp_admanager_menu_init() { esc_html__( 'Sticky adunit name', 'amp-admanager' ), [ $this, 'get_sticky_adunit_name_field' ], 'amp-admanager-menu-page', - 'amp-admanager-general-settings' + 'amp-admanager-sticky-ad-settings' + ); + + add_settings_field( + 'amp_admanager_sticky_ad_height', + esc_html__( 'Sticky Ad height', 'amp-admanager' ), + [ $this, 'get_sticky_adunit_height_field' ], + 'amp-admanager-menu-page', + 'amp-admanager-sticky-ad-settings' + ); + + add_settings_field( + 'amp_admanager_sticky_ad_width', + esc_html__( 'Sticky Ad width', 'amp-admanager' ), + [ $this, 'get_sticky_adunit_width_field' ], + 'amp-admanager-menu-page', + 'amp-admanager-sticky-ad-settings' ); } @@ -152,4 +175,22 @@ public function get_enable_sticky_ad_checkbox_field() { public function get_sticky_adunit_name_field() { printf( '', esc_attr( $this->amp_settings['amp_admanager_sticky_ad_unit'] ) ); } + + /** + * Prints markup for sticky ad width field. + * + * @return void + */ + public function get_sticky_adunit_width_field() { + printf( '', esc_attr( $this->amp_settings['amp_admanager_sticky_ad_width'] ) ); + } + + /** + * Prints markup for sticky ad height field. + * + * @return void + */ + public function get_sticky_adunit_height_field() { + printf( '', esc_attr( $this->amp_settings['amp_admanager_sticky_ad_height'] ) ); + } } From bf6a6b11084e6af040f8f9d66fe6f279afd6e580 Mon Sep 17 00:00:00 2001 From: Deepak Lalwani Date: Mon, 15 Jun 2020 15:31:13 +0530 Subject: [PATCH 15/15] Use height and width setting fields to apply height and width to ad --- classes/class-amp-admanager.php | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/classes/class-amp-admanager.php b/classes/class-amp-admanager.php index f5a410a..fe61f2b 100644 --- a/classes/class-amp-admanager.php +++ b/classes/class-amp-admanager.php @@ -287,14 +287,24 @@ public static function get_ads( $attr = [], $echo = false ) { */ public static function get_sticky_ad( $attr = [], $echo = false ) { - $attr['sticky'] = true; - $attr['ad-unit'] = esc_attr( self::$amp_settings['amp_admanager_sticky_ad_unit'] ); - $attr['width'] = '728'; // @Todo Create setting fields from adn use height and width from settings. - $attr['height'] = '90'; - $attr['layout'] = 'fixed'; - - if( true === $echo ) { - echo self::get_amp_ad( $attr, $echo ); + if ( empty( self::$amp_settings['amp_admanager_sticky_ad_unit'] ) || empty( self::$amp_settings['amp_admanager_sticky_ad_width'] ) || empty( self::$amp_settings['amp_admanager_sticky_ad_height'] ) ) { + return; + } + + $default_attr = [ + 'ad-unit' => esc_attr( self::$amp_settings['amp_admanager_sticky_ad_unit'] ), + 'width' => esc_attr( self::$amp_settings['amp_admanager_sticky_ad_width'] ), + 'height' => esc_attr( self::$amp_settings['amp_admanager_sticky_ad_height'] ), + 'layout' => 'fixed', + + ]; + + $attr = wp_parse_args( $attr, $default_attr ); + + $attr['sticky'] = true; + + if ( true === $echo ) { + echo self::get_amp_ad( $attr, $echo ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } else { return self::get_amp_ad( $attr, $echo ); }