class-premium-prominent-words-service.php 1.02 KB
<?php
/**
 * @package WPSEO\Premium
 */

/**
 * Handles the actual requests to the prominent words endpoints.
 */
class WPSEO_Premium_Prominent_Words_Service {

	/**
	 * Queries the terms for the supplied word.
	 *
	 * @param WP_REST_Request $request Data from the query request.
	 * @return WP_REST_Response The response with the found term.
	 */
	public function query( WP_REST_Request $request ) {
		$word = $request->get_param( 'word' );

		// WordPress saves the term name with escaped HTML entities, so make sure we search for the word with escaped HTML entities.
		$word = sanitize_term_field( 'name', $word, -1, WPSEO_Premium_Prominent_Words_Registration::TERM_NAME, 'db' );

		$term = get_term_by( 'name', $word, WPSEO_Premium_Prominent_Words_Registration::TERM_NAME );

		if ( ! $term instanceof WP_Term ) {
			return new WP_REST_Response( null );
		}

		$controller = new WP_REST_Terms_Controller( WPSEO_Premium_Prominent_Words_Registration::TERM_NAME );

		return $controller->prepare_item_for_response( $term, $request );
	}
}