- WordPress core y plugins - Tema Twenty Twenty-Four configurado - Plugin allow-unfiltered-html.php simplificado - .gitignore configurado para excluir wp-config.php y uploads 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
187 lines
4.5 KiB
PHP
Executable File
187 lines
4.5 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Rest OnBoarding.
|
|
*
|
|
* @package AdvancedAds
|
|
* @author Advanced Ads <info@wpadvancedads.com>
|
|
* @since 1.50.0
|
|
*/
|
|
|
|
namespace AdvancedAds\Rest;
|
|
|
|
use WP_Error;
|
|
use WP_REST_Server;
|
|
use WP_REST_Request;
|
|
use AdvancedAds\Options;
|
|
use AdvancedAds\Constants;
|
|
use AdvancedAds\Abstracts\Ad;
|
|
use Advanced_Ads_AdSense_Data;
|
|
use AdvancedAds\Abstracts\Placement;
|
|
use AdvancedAds\Framework\Interfaces\Routes_Interface;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* Rest OnBoarding.
|
|
*/
|
|
class OnBoarding implements Routes_Interface {
|
|
|
|
/**
|
|
* Registers routes with WordPress.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function register_routes(): void {
|
|
register_rest_route(
|
|
Constants::REST_BASE,
|
|
'/onboarding',
|
|
[
|
|
'methods' => WP_REST_Server::CREATABLE,
|
|
'callback' => [ $this, 'save_options' ],
|
|
'permission_callback' => function () {
|
|
return current_user_can( 'manage_options' );
|
|
},
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Save onbaording options
|
|
*
|
|
* @param WP_REST_Request $request Request data.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function save_options( $request ) {
|
|
$task_code = $request->get_param( 'taskOption' );
|
|
$allowed_task = [
|
|
'google_adsense',
|
|
'ad_image',
|
|
'ad_code',
|
|
];
|
|
|
|
if ( ! in_array( $task_code, $allowed_task, true ) ) {
|
|
return new WP_Error(
|
|
'task_not_allowed',
|
|
esc_html__( 'The task code posted is not allowed', 'advanced-ads' )
|
|
);
|
|
}
|
|
|
|
$item = $this->$task_code( $request );
|
|
update_option( '_advanced_ads_data_usage', $request->get_param( 'agreement' ) ? true : false );
|
|
|
|
// First post link.
|
|
$posts = get_posts(
|
|
[
|
|
'posts_per_page' => 1,
|
|
'post_type' => 'post',
|
|
]
|
|
);
|
|
|
|
update_option( Constants::OPTION_WIZARD_COMPLETED, true );
|
|
|
|
$pub_id = Options::instance()->get( 'adsense.adsense-id' );
|
|
$adsense_url = $pub_id ? "https://www.google.com/adsense/new/u/0/$pub_id/myads/sites" : '';
|
|
|
|
return [
|
|
'success' => true,
|
|
'itemEditLink' => $item ? $item->get_edit_link() : '',
|
|
'postLink' => ! empty( $posts ) ? get_permalink( $posts[0] ) : '',
|
|
'adsenseAccount' => $adsense_url,
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Create ad by google adsense
|
|
*
|
|
* @param WP_REST_Request $request Request data.
|
|
*
|
|
* @return bool|Placement|Ad
|
|
*/
|
|
private function google_adsense( $request ) {
|
|
$ads_placement = $request->get_param( 'googleAdsPlacement' );
|
|
|
|
if ( 'auto_ads' === $ads_placement ) {
|
|
$ads_options = $request->get_param( 'autoAdsOptions' );
|
|
$options = Advanced_Ads_AdSense_Data::get_instance()->get_options();
|
|
|
|
$options['page-level-enabled'] = in_array( 'enable', $ads_options, true );
|
|
|
|
if ( isset( $options['amp'] ) && ! in_array( 'enableAmp', $ads_options, true ) ) {
|
|
unset( $options['amp'] );
|
|
} else {
|
|
$options['amp']['auto_ads_enabled'] = 1;
|
|
}
|
|
|
|
update_option( GADSENSE_OPT_NAME, $options );
|
|
} elseif ( 'manual' === $ads_placement ) {
|
|
$ad = wp_advads_create_new_ad( 'adsense' );
|
|
$ad->save();
|
|
|
|
$placement = wp_advads_create_new_placement();
|
|
$placement->set_title( 'AdSense Placement from wizard # ' . wp_rand() );
|
|
$placement->set_item( 'ad_' . $ad->get_id() );
|
|
$placement->save();
|
|
|
|
return $ad;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Create ad by image
|
|
*
|
|
* @param WP_REST_Request $request Request data.
|
|
*
|
|
* @return Placement
|
|
*/
|
|
private function ad_image( $request ): Placement {
|
|
$image = $request->get_param( 'adImage' );
|
|
$image_url = $request->get_param( 'adImageUrl' );
|
|
|
|
$ad = wp_advads_create_new_ad( 'image' );
|
|
$ad->set_title( 'Test image ad from wizard # ' . wp_rand() );
|
|
$ad->set_image_id( $image['id'] );
|
|
$ad->set_url( $image_url );
|
|
$ad->save();
|
|
|
|
return $this->create_placement( $ad );
|
|
}
|
|
|
|
/**
|
|
* Create ad by code
|
|
*
|
|
* @param WP_REST_Request $request Request data.
|
|
*
|
|
* @return Placement
|
|
*/
|
|
private function ad_code( $request ): Placement {
|
|
$ad = wp_advads_create_new_ad( 'plain' );
|
|
$ad->set_title( 'Test ad from wizard # ' . wp_rand() );
|
|
$ad->set_content( $request->get_param( 'adCode' ) );
|
|
$ad->save();
|
|
|
|
return $this->create_placement( $ad );
|
|
}
|
|
|
|
/**
|
|
* Create placement with the ad
|
|
*
|
|
* @param Ad $ad Ad instance to use as item.
|
|
*
|
|
* @return Placement
|
|
*/
|
|
private function create_placement( Ad $ad ): Placement {
|
|
$placement = wp_advads_create_new_placement( 'post_content' );
|
|
$placement->set_title( 'Test Placement from wizard # ' . wp_rand() );
|
|
$placement->set_item( 'ad_' . $ad->get_id() );
|
|
$placement->set_prop( 'position', 'after' );
|
|
$placement->set_prop( 'index', 3 );
|
|
$placement->set_prop( 'tag', 'p' );
|
|
$placement->save();
|
|
|
|
return $placement;
|
|
}
|
|
}
|