post_type ) { return; } if ( 'publish' !== $new_status ) { return; } if ( 'publish' !== $old_status ) { $this->enqueue_ces_survey_for_new_product(); } else { $this->enqueue_ces_survey_for_edited_product(); } } /** * Get the current published product count. * * @return integer The current published product count. */ private function get_product_count() { $query = new \WC_Product_Query( array( 'limit' => 1, 'paginate' => true, 'return' => 'ids', 'status' => array( 'publish' ), ) ); $products = $query->get_products(); $product_count = intval( $products->total ); return $product_count; } /** * Enqueue the CES survey trigger for a new product. */ private function enqueue_ces_survey_for_new_product() { $queue = get_option( self::CES_TRACKS_QUEUE_OPTION_NAME, array() ); $queue[] = array( 'track_name' => 'product_add_publish_effort_score', 'label' => __( 'How easy was it to add a product?', 'woocommerce-admin' ), 'props' => array( 'product_count' => $this->get_product_count(), ), ); update_option( self::CES_TRACKS_QUEUE_OPTION_NAME, $queue ); } /** * Enqueue the CES survey trigger for an existing product. */ private function enqueue_ces_survey_for_edited_product() { $queue = get_option( self::CES_TRACKS_QUEUE_OPTION_NAME, array() ); $queue[] = array( 'track_name' => 'product_update_effort_score', 'label' => __( 'How easy was it to edit your product?', 'woocommerce-admin' ), 'props' => array( 'product_count' => $this->get_product_count(), ), ); update_option( self::CES_TRACKS_QUEUE_OPTION_NAME, $queue ); } /** * Maybe clear the CES tracks queue, executed on every page load. If the * clear option is set it clears the queue. In practice, this executes a * page load after the queued CES tracks are displayed on the client, which * sets the clear option. */ public function maybe_clear_ces_tracks_queue() { $clear_ces_tracks_queue = get_option( self::CLEAR_CES_TRACKS_QUEUE_OPTION_NAME, false ); if ( $clear_ces_tracks_queue ) { update_option( self::CES_TRACKS_QUEUE_OPTION_NAME, array() ); update_option( self::CLEAR_CES_TRACKS_QUEUE_OPTION_NAME, false ); } } }