// ... (بخش‌های register_routes و validate_api_key بدون تغییر) // ... (متد check_connection بدون تغییر) /** * EndPoint دریافت و ذخیره محصول همگام‌سازی شده */ public function sync_product( $request ) { if ( ! class_exists( 'WC_Product_Simple' ) ) { return new WP_REST_Response( array( 'message' => 'WooCommerce is not active' ), 500 ); } $data = $request->get_json_params(); $hub_product_id = $data['hub_product_id']; if ( empty( $hub_product_id ) ) { return new WP_REST_Response( array( 'message' => 'Hub Product ID is required' ), 400 ); } $product_id = $this->get_client_product_id_by_hub_id( $hub_product_id ); if ( $product_id ) { $product = wc_get_product( $product_id ); if ( ! $product ) { $product = new WC_Product_Simple(); } } else { $product = new WC_Product_Simple(); } $product->set_name( sanitize_text_field( $data['name'] ) ); $product->set_regular_price( floatval( $data['price'] ) ); $product->set_price( floatval( $data['price'] ) ); $product->set_description( wp_kses_post( $data['description'] ) ); $product->set_status( 'publish' ); $product_id = $product->save(); if ( $product_id ) { update_post_meta( $product_id, '_addup_hub_product_id', $hub_product_id ); } return new WP_REST_Response( array( 'message' => 'Product sync successful', 'hub_id' => $hub_product_id, 'client_id' => $product_id ), 200 ); } private function get_client_product_id_by_hub_id( $hub_product_id ) { global $wpdb; $product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = %s AND meta_value = %s", '_addup_hub_product_id', $hub_product_id ) ); return $product_id; } // ... (بقیه متد update_order_status بدون تغییر)