WC_API_Taxes::get_tax()publicWC 2.5.0

Get the tax for the given ID

Method of the class: WC_API_Taxes{}

Hooks from the method

Return

Array|WP_Error.

Usage

$WC_API_Taxes = new WC_API_Taxes();
$WC_API_Taxes->get_tax( $id, $fields );
$id(int) (required)
The tax ID
$fields(string)
fields to include in response
Default: null

Changelog

Since 2.5.0 Introduced.

WC_API_Taxes::get_tax() code WC 8.6.1

public function get_tax( $id, $fields = null ) {
	global $wpdb;

	try {
		$id = absint( $id );

		// Permissions check
		if ( ! current_user_can( 'manage_woocommerce' ) ) {
			throw new WC_API_Exception( 'woocommerce_api_user_cannot_read_tax', __( 'You do not have permission to read tax rate', 'woocommerce' ), 401 );
		}

		// Get tax rate details
		$tax = WC_Tax::_get_tax_rate( $id );

		if ( is_wp_error( $tax ) || empty( $tax ) ) {
			throw new WC_API_Exception( 'woocommerce_api_invalid_tax_id', __( 'A tax rate with the provided ID could not be found', 'woocommerce' ), 404 );
		}

		$tax_data = array(
			'id'       => (int) $tax['tax_rate_id'],
			'country'  => $tax['tax_rate_country'],
			'state'    => $tax['tax_rate_state'],
			'postcode' => '',
			'city'     => '',
			'rate'     => $tax['tax_rate'],
			'name'     => $tax['tax_rate_name'],
			'priority' => (int) $tax['tax_rate_priority'],
			'compound' => (bool) $tax['tax_rate_compound'],
			'shipping' => (bool) $tax['tax_rate_shipping'],
			'order'    => (int) $tax['tax_rate_order'],
			'class'    => $tax['tax_rate_class'] ? $tax['tax_rate_class'] : 'standard',
		);

		// Get locales from a tax rate
		$locales = $wpdb->get_results( $wpdb->prepare( "
			SELECT location_code, location_type
			FROM {$wpdb->prefix}woocommerce_tax_rate_locations
			WHERE tax_rate_id = %d
		", $id ) );

		if ( ! is_wp_error( $tax ) && ! is_null( $tax ) ) {
			foreach ( $locales as $locale ) {
				$tax_data[ $locale->location_type ] = $locale->location_code;
			}
		}

		return array( 'tax' => apply_filters( 'woocommerce_api_tax_response', $tax_data, $tax, $fields, $this ) );
	} catch ( WC_API_Exception $e ) {
		return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) );
	}
}