'object', 'properties' => array( 'query' => array( 'type' => 'string', 'description' => 'Search keywords.', ), 'limit' => array( 'type' => 'integer', 'description' => 'Maximum number of results (1-5).', ), ), 'required' => array( 'query' ), ); } public function is_enabled(): bool { return (bool) Aivexa_Settings::get( 'enable_page_search', true ); } /** * Execute page search. * * @param array $arguments Arguments. */ public function execute( array $arguments ) { $query = isset( $arguments['query'] ) ? sanitize_text_field( (string) $arguments['query'] ) : ''; $limit = isset( $arguments['limit'] ) ? absint( $arguments['limit'] ) : 5; $limit = max( 1, min( 5, $limit ) ); if ( '' === $query ) { return new WP_Error( 'aivexa_page_search_empty', __( 'Search query is required.', 'aivexa' ) ); } return array( 'query' => $query, 'results' => Aivexa_Site_Search_Tool::search_content( $query, $limit, array( 'page' ) ), ); } }