: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
$installed_pro_plugins = 0;
// handle AdSense In-feed if already installed or not activated.
if ( isset( $installed_plugins['advanced-ads-adsense-in-feed/advanced-ads-in-feed.php'] ) ) { // is installed, but not active.
// remove plugin from the list.
unset( $add_ons['adsense-in-feed'] );
if ( isset( $installed_plugins['advanced-ads-pro/advanced-ads-pro.php'] ) && ! class_exists( 'Advanced_Ads_Pro' ) ) { // is installed, but not active.
$add_ons['pro']['link'] = wp_nonce_url( 'plugins.php?action=activate&plugin=advanced-ads-pro/advanced-ads-pro.php&', 'activate-plugin_advanced-ads-pro/advanced-ads-pro.php' );
$add_ons['pro']['link_title'] = __( 'Activate now', 'advanced-ads' );
++$installed_pro_plugins;
} elseif ( class_exists( 'Advanced_Ads_Pro' ) ) {
$add_ons['pro']['link'] = 'https://wpadvancedads.com/manual/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons-manual';
$add_ons['pro']['desc'] = '';
$add_ons['pro']['installed'] = true;
$add_ons['pro']['order'] = 20;
++$installed_pro_plugins;
unset( $add_ons['pro'] );
if ( isset( $installed_plugins['advanced-ads-tracking/tracking.php'] ) && ! class_exists( 'Advanced_Ads_Tracking_Plugin' ) ) { // is installed, but not active.
$add_ons['tracking']['link'] = wp_nonce_url( 'plugins.php?action=activate&plugin=advanced-ads-tracking/tracking.php&', 'activate-plugin_advanced-ads-tracking/tracking.php' );
$add_ons['tracking']['link_title'] = __( 'Activate now', 'advanced-ads' );
++$installed_pro_plugins;
} elseif ( class_exists( 'Advanced_Ads_Tracking_Plugin', false ) &&
method_exists( Advanced_Ads_Tracking_Plugin::get_instance(), 'get_tracking_method' ) ) {
$add_ons['tracking']['link'] = 'https://wpadvancedads.com/manual/tracking-documentation/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons-manual';
if ( 'ga' !== Advanced_Ads_Tracking_Plugin::get_instance()->get_tracking_method() ) {
// don’t show Tracking link if Analytics method is enabled.
$add_ons['tracking']['desc'] = '<a href="' . admin_url( '/admin.php?page=advanced-ads-stats' ) . '">' . __( 'Visit your ad statistics', 'advanced-ads' ) . '</a>';
$add_ons['tracking']['desc'] = '';
$add_ons['tracking']['installed'] = true;
$add_ons['tracking']['order'] = 20;
++$installed_pro_plugins;
unset( $add_ons['tracking'] );
if ( isset( $installed_plugins['advanced-ads-responsive/responsive-ads.php'] ) && ! class_exists( 'Advanced_Ads_Responsive_Plugin' ) ) { // is installed, but not active.
$add_ons['responsive']['link'] = wp_nonce_url( 'plugins.php?action=activate&plugin=advanced-ads-responsive/responsive-ads.php&', 'activate-plugin_advanced-ads-responsive/responsive-ads.php' );
$add_ons['responsive']['link_title'] = __( 'Activate now', 'advanced-ads' );
++$installed_pro_plugins;
} elseif ( class_exists( 'Advanced_Ads_Responsive_Plugin' ) ) {
$add_ons['responsive']['link'] = 'https://wpadvancedads.com/manual/ads-on-amp-pages/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons-manual';
$add_ons['responsive']['desc'] = '';
$add_ons['responsive']['installed'] = true;
$add_ons['responsive']['order'] = 20;
++$installed_pro_plugins;
unset( $add_ons['responsive'] );
if ( isset( $installed_plugins['advanced-ads-gam/advanced-ads-gam.php'] ) && ! class_exists( 'Advanced_Ads_Network_Gam' ) ) { // is installed, but not active.
$add_ons['gam']['link'] = wp_nonce_url( 'plugins.php?action=activate&plugin=advanced-ads-gam/advanced-ads-gam.php&', 'activate-plugin_advanced-ads-gam/advanced-ads-gam.php' );
$add_ons['gam']['link_title'] = __( 'Activate now', 'advanced-ads' );
++$installed_pro_plugins;
} elseif ( class_exists( 'Advanced_Ads_Network_Gam' ) ) {
$add_ons['gam']['link'] = 'https://wpadvancedads.com/manual/google-ad-manager-integration-manual/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons-manual';
$add_ons['gam']['desc'] = '';
$add_ons['gam']['installed'] = true;
$add_ons['gam']['order'] = 20;
++$installed_pro_plugins;
unset( $add_ons['gam'] );
if ( isset( $installed_plugins['advanced-ads-sticky-ads/sticky-ads.php'] ) && ! class_exists( 'Advanced_Ads_Sticky_Plugin' ) ) { // is installed, but not active.
$add_ons['sticky']['link'] = wp_nonce_url( 'plugins.php?action=activate&plugin=advanced-ads-sticky-ads/sticky-ads.php&', 'activate-plugin_advanced-ads-sticky-ads/sticky-ads.php' );
$add_ons['sticky']['link_title'] = __( 'Activate now', 'advanced-ads' );
++$installed_pro_plugins;
} elseif ( class_exists( 'Advanced_Ads_Sticky_Plugin' ) ) {
$add_ons['sticky']['link'] = 'https://wpadvancedads.com/manual/sticky-ads-documentation/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons-manual';
$add_ons['sticky']['desc'] = '';
$add_ons['sticky']['installed'] = true;
$add_ons['sticky']['order'] = 20;
++$installed_pro_plugins;
unset( $add_ons['sticky'] );
if ( isset( $installed_plugins['advanced-ads-layer/layer-ads.php'] ) && ! class_exists( 'Advanced_Ads_Layer_Plugin' ) ) { // is installed, but not active.
$add_ons['layer']['link'] = wp_nonce_url( 'plugins.php?action=activate&plugin=advanced-ads-layer/layer-ads.php&', 'activate-plugin_advanced-ads-layer/layer-ads.php' );
$add_ons['layer']['link_title'] = __( 'Activate now', 'advanced-ads' );
++$installed_pro_plugins;
} elseif ( class_exists( 'Advanced_Ads_Layer_Plugin' ) ) {
$add_ons['layer']['link'] = 'https://wpadvancedads.com/manual/popup-and-layer-ads-documentation/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons-manual';
$add_ons['layer']['desc'] = '';
$add_ons['layer']['installed'] = true;
$add_ons['layer']['order'] = 20;
++$installed_pro_plugins;
unset( $add_ons['layer'] );
if ( isset( $installed_plugins['advanced-ads-selling/advanced-ads-selling.php'] ) && ! class_exists( 'Advanced_Ads_Selling_Plugin' ) ) { // is installed, but not active.
$add_ons['selling']['link'] = wp_nonce_url( 'plugins.php?action=activate&plugin=advanced-ads-selling/advanced-ads-selling.php&', 'activate-plugin_advanced-ads-selling/advanced-ads-selling.php' );
$add_ons['selling']['link_title'] = __( 'Activate now', 'advanced-ads' );
++$installed_pro_plugins;
} elseif ( class_exists( 'Advanced_Ads_Selling_Plugin' ) ) {
$add_ons['selling']['link'] = 'https://wpadvancedads.com/manual/selling-ads/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons-manual';
$add_ons['selling']['desc'] = '';
$add_ons['selling']['installed'] = true;
$add_ons['selling']['order'] = 20;
++$installed_pro_plugins;
unset( $add_ons['selling'] );
if ( isset( $installed_plugins['advanced-ads-slider/slider.php'] ) && ! class_exists( 'Advanced_Ads_Slider_Plugin' ) ) { // is installed, but not active.
$add_ons['slider']['link'] = wp_nonce_url( 'plugins.php?action=activate&plugin=advanced-ads-slider/slider.php&', 'activate-plugin_advanced-ads-slider/slider.php' );
$add_ons['slider']['link_title'] = __( 'Activate now', 'advanced-ads' );
} elseif ( class_exists( 'Advanced_Ads_Slider_Plugin' ) ) {
$add_ons['slider']['link'] = 'https://wpadvancedads.com/manual/ad-slider/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons-manual';
$add_ons['slider']['desc'] = '';
$add_ons['slider']['installed'] = true;
$add_ons['slider']['order'] = 20;
unset( $add_ons['slider'] );
// add Genesis Ads, if Genesis based theme was detected.
if ( defined( 'PARENT_THEME_NAME' ) && 'Genesis' === PARENT_THEME_NAME ) {
'title' => 'Genesis Ads',
'desc' => __( 'Use Genesis specific ad positions.', 'advanced-ads' ),
'link' => wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=advanced-ads-genesis' ), 'install-plugin_advanced-ads-genesis' ),
'link_title' => __( 'Install now', 'advanced-ads' ),
// handle install link as long as we can not be sure this is done by the Genesis plugin itself.
if ( isset( $installed_plugins['advanced-ads-genesis/genesis-ads.php'] ) ) { // is installed (active or not).
unset( $add_ons['genesis'] );
// add Ads for WPBakery Page Builder (formerly Visual Composer), if VC was detected.
if ( defined( 'WPB_VC_VERSION' ) ) {
$add_ons['visual_composer'] = [
'title' => 'Ads for WPBakery Page Builder (formerly Visual Composer)',
'desc' => __( 'Manage ad positions with WPBakery Page Builder (formerly Visual Composer).', 'advanced-ads' ),
'link' => wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=ads-for-visual-composer' ), 'install-plugin_ads-for-visual-composer' ),
'link_title' => __( 'Install now', 'advanced-ads' ),
// handle install link as long as we can not be sure this is done by the Genesis plugin itself.
if ( isset( $installed_plugins['ads-for-visual-composer/advanced-ads-vc.php'] ) ) { // is installed (active or not).
unset( $add_ons['visual_composer'] );
// show All Access Pitch if less than 2 add-ons exist.
if ( $installed_pro_plugins < 2 ) {
'desc' => __( 'Our best deal with all add-ons included.', 'advanced-ads' ),
'link' => 'https://wpadvancedads.com/add-ons/all-access/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
'link_title' => __( 'Get full access', 'advanced-ads' ),
$all_access_expiry = Advanced_Ads_Admin_Licenses::get_instance()->get_probably_all_access_expiry();
// show All Access long-term pitch if less than 2 add-ons exist or
// All Access license is expiring within next 12 month or already expired.
$installed_pro_plugins < 2
|| ( $all_access_expiry && ( time() + YEAR_IN_SECONDS ) > strtotime( $all_access_expiry ) )
$add_ons['long_term'] = [
'title' => 'All Access long-term',
'desc' => __( 'A one-time payment for four years of support and updates. The package saves you up to 70% compared to individually purchasing our add-ons.', 'advanced-ads' ),
'link' => 'https://wpadvancedads.com/add-ons/all-access-long-term/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
'link_title' => __( 'Get full access', 'advanced-ads' ),
// allow add-ons to manipulate the output.
$add_ons = apply_filters( 'advanced-ads-overview-add-ons', $add_ons );
uasort( $add_ons, [ __CLASS__, 'sort_by_order' ] );
<table class="widefat striped">
foreach ( $add_ons as $_addon ) :
if ( isset( $_addon['installed'] ) ) {
$link_title = __( 'Visit the manual', 'advanced-ads' );
$_addon['title'] = '<span class="dashicons dashicons-yes" style="color: green; font-size: 1.5em;"></span> ' . $_addon['title'];
$link_title = isset( $_addon['link_title'] ) ? $_addon['link_title'] : __( 'Get this add-on', 'advanced-ads' );
include ADVADS_ABSPATH . 'admin/views/overview-addons-line.php';
* Sort by installed add-ons
* @param array $a argument a.
* @param array $b argument b.
protected static function sort_by_order( $a, $b ) {
return $a['order'] - $b['order'];