You can add your own placement to Advanced Ads. The example below does that for a specific action hook. You can adjust it according to your own purpose.
Just change the ADVADS_CUSTOM_HOOK_PLACEMENT_HOOK_NAME to any action hook you want to show the ads in.
The whole code from below can go into a new PHP file which you can then move to the wp-content/plugins folder to work as a custom plugin.
When enabled, the plugin adds a new placement type to which you can assign ads or set options like labels or cache-busting.
<?php /** * Advanced Ads – Custom Hook Placement * * @wordpress-plugin * Plugin Name: Advanced Ads – Custom Hook Placement * Plugin URI: https://wpadvancedads.com * Description: Manage and optimize your ads in WordPress * Version: 0.1 * Author: Thomas Maier * Author URI: https://wpadvancedads.com * Domain Path: /languages * License: GPL-2.0+ * License URI: https://www.gnu.org/licenses/gpl-2.0.txt */ // If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { die; } /** * change the action hook here */ define( 'ADVADS_CUSTOM_HOOK_PLACEMENT_HOOK_NAME', 'ampforwp_before_post_content' ); add_action( 'plugins_loaded', 'advanced_ads_custom_hook_placement_plugins_loaded_ad_actions' ); /** * Initialize this add-on */ function advanced_ads_custom_hook_placement_plugins_loaded_ad_actions() { // Stop, if main plugin doesn’t exist. if ( ! class_exists( 'Advanced_Ads', false ) ) { return; } // Load the dynamic hook. $placements = get_option( 'advads-ads-placements', array() ); foreach ( $placements as $_placement_id => $_placement ) { if ( isset( $_placement['type'] ) && 'custom_hook_ampforwp' == $_placement['type'] ) { add_action( ADVADS_CUSTOM_HOOK_PLACEMENT_HOOK_NAME, 'advanced_ads_custom_hook_placement_execute_hook' ); } } } function advanced_ads_custom_hook_placement_execute_hook() { // Get placements. $placements = get_option( 'advads-ads-placements', array() ); // Look for the current hook in the placements. $hook = current_filter(); foreach ( $placements as $_placement_id => $_placement ) { if ( isset( $_placement['type'] ) && 'custom_hook_ampforwp' == $_placement['type'] && $hook === ADVADS_CUSTOM_HOOK_PLACEMENT_HOOK_NAME ) { // the_ad_placement( $_placement_id ); $_options = isset( $_placement['options'] ) ? $_placement['options'] : array(); echo Advanced_Ads_Select::get_instance()->get_ad_by_method( $_placement_id, Advanced_Ads_Select::PLACEMENT, $_options ); } } } /** * Backend functions */ add_action( 'plugins_loaded', 'advanced_ads_custom_hook_placement_admin_plugins_loaded' ); function advanced_ads_custom_hook_placement_admin_plugins_loaded() { if ( ! class_exists( 'Advanced_Ads_Admin', false ) ) { return; } // Add custom hook placement. add_action( 'advanced-ads-placement-types', 'advanced_ads_custom_hook_placement_add_placement' ); } /** * Add placement */ function advanced_ads_custom_hook_placement_add_placement( $types ) { // Placement title and description $types['custom_hook_ampforwp'] = array( 'title' => 'AMP for WP Hook', 'description' => 'Custom Hook Placement' ); return $types; }