: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* Auto Ad Creation using PGHB config.
* @author Advanced Ads <info@wpadvancedads.com>
namespace AdvancedAds\Modules\OneClick;
use AdvancedAds\Entities;
defined( 'ABSPATH' ) || exit;
* Create ads from PGHB config.
const CRON_HOOK = 'advanced-ads-pghb-auto-ad-creation';
private $author_id = null;
* Hold slot ids from database.
* @param array $ads Hold all the ads.
public function run( $ads ): void {
$this->fetch_created_slots();
array_map( [ $this, 'create_ad' ], $ads );
* Fetch created slots from database.
private function fetch_created_slots(): void {
$this->slots = $wpdb->get_col(
"SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = %s",
* @param array $ad Hold ad info.
protected function create_ad( $ad ): void {
if ( empty( $ad['slot'] ) || in_array( $ad['slot'], $this->slots, true ) ) {
if ( 'all' !== $ad['device'] ) {
'value' => [ $ad['device'] ],
if ( ! empty( $ad['sizes'] ) && ! empty( $ad['sizes'][0] ) ) {
$options['width'] = $ad['sizes'][0][0];
$options['height'] = $ad['sizes'][0][1];
'post_title' => $ad['slot'],
'post_content' => sprintf( '<pubguru id="%s"></pubguru>', $ad['slot'] ),
'post_status' => 'publish',
'post_type' => Entities::POST_TYPE_AD,
'post_author' => $this->get_author_id(),
'pghb_slot_id' => $ad['slot'],
'advanced_ads_ad_options' => $options,
private function get_author_id(): int {
if ( null !== $this->author_id ) {
'role' => 'Administrator',
$this->author_id = isset( $users[0] ) ? $users[0]->ID : 0;