| Server IP : 172.67.147.195 / Your IP : 216.73.216.142 Web Server : Apache/2 System : Linux hosting8537.lvs 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : mienphi ( 1014) PHP Version : 8.2.14 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/mienphi/public_html/wp-content/plugins/woocommerce/src/Admin/API/AI/ |
Upload File : |
<?php
declare( strict_types = 1 );
namespace Automattic\WooCommerce\Admin\API\AI;
use Automattic\WooCommerce\Blocks\AIContent\UpdateProducts;
use WP_Error;
use WP_REST_Request;
use WP_REST_Response;
defined( 'ABSPATH' ) || exit;
/**
* Product controller
*
* @internal
*/
class Product extends AIEndpoint {
/**
* The endpoint response option name.
*
* @var string
*/
const AI_CONTENT_GENERATED = 'ai_content_generated';
/**
* Endpoint.
*
* @var string
*/
protected $endpoint = 'product';
/**
* Register routes.
*/
public function register_routes() {
$this->register(
array(
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this, 'update_product' ),
'permission_callback' => array( Middleware::class, 'is_authorized' ),
'args' => array(
'products_information' => array(
'description' => __( 'Data generated by AI for updating dummy products.', 'woocommerce' ),
'type' => 'object',
),
'last_product' => array(
'description' => __( 'Whether the product being updated is the last one in the loop', 'woocommerce' ),
'type' => 'boolean',
),
),
),
)
);
}
/**
* Update product with the content and images powered by AI.
*
* @param WP_REST_Request $request Request object.
*
* @return WP_REST_Response
*/
public function update_product( WP_REST_Request $request ) {
$product_information = $request['products_information'] ?? array();
if ( empty( $product_information ) ) {
return rest_ensure_response(
array(
self::AI_CONTENT_GENERATED => true,
)
);
}
try {
$product_updater = new UpdateProducts();
$product_updater->update_product_content( $product_information );
} catch ( \Exception $e ) {
return rest_ensure_response( array( 'ai_content_generated' => false ) );
}
$last_product_to_update = $request['last_product'] ?? false;
if ( $last_product_to_update ) {
flush_rewrite_rules();
}
return rest_ensure_response(
array(
self::AI_CONTENT_GENERATED => true,
)
);
}
}