Uname:Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64

Base Dir : /var/www/html

User : gavin


403WebShell
403Webshell
Server IP : 68.183.124.220  /  Your IP : 216.73.217.137
Web Server : Apache/2.4.18 (Ubuntu)
System : Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64
User : gavin ( 1000)
PHP Version : 7.0.33-0ubuntu0.16.04.16
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/wp-content/plugins/wp-rest-api-controller/admin/partials/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/wp-content/plugins/wp-rest-api-controller/admin/partials/settings-functions.php
<?php
// ------------------------------------------------------------------
// Add all the sections, fields and settings during admin_init
// ------------------------------------------------------------------
//
class wp_rest_api_controller_Settings {

	// Store our REST API Endpoint base.
	public $rest_endpoint_base;

	// Post type slugs that we should not allow users to enable/disable.
	private $always_enabled_post_type_slugs;

	private $excluded_taxonomies = [
		'nav_menu' => 'nav_menu',
	];

	public function __construct() {
		add_action( 'admin_init', array( $this, 'set_always_enabled_post_type_slugs' ), 1 );
		add_action( 'admin_init', array( $this, 'wp_rest_api_controller_settings_api_init' ) );
		add_action( 'admin_init', array( $this, 'wp_rest_api_controller_delete_api_cache' ) );
	}

	public function set_always_enabled_post_type_slugs() {
		$this->always_enabled_post_type_slugs = apply_filters( 'wp_rest_api_controller_always_enabled_post_types', array(
				'post',
				'page',
				'revision',
				'nav_menu_item',
				'custom_css',
				'customize_changeset',
				'attachment'
			)
		);
	}

	public function get_excluded_taxonomies() {
		return apply_filters( 'wp_rest_api_controller_excluded_taxonomy_slugs', $this->excluded_taxonomies );
	}

	public function wp_rest_api_controller_settings_api_init() {

		$post_types = $this->get_registered_post_types();

		/**
		 * Get the rest URL endpoint.
		 *
		 * @link https://developer.wordpress.org/reference/functions/get_rest_url/
		 * @return Full URL to the endpoint.
		 */
		$this->rest_endpoint_base = esc_url( get_rest_url( null, '/wp/v2/' ) );

		add_settings_section(
			'wp_rest_api_controller_setting_section',
			null,
			array( $this, 'wp_rest_api_controller_setting_section_callback_function' ),
			'wp-rest-api-controller'
		);

		if ( ! empty( $post_types ) ) {

			$wp_rest_api_controller_post_types = array();

			foreach ( $post_types as $post_type_slug => $post_type_name ) {

				add_settings_field(
					"wp_rest_api_controller_post_types_{$post_type_slug}",
					$post_type_name,
					array( $this, 'wp_rest_api_controller_setting_section_setting_callback_function' ),
					'wp-rest-api-controller',
					'wp_rest_api_controller_setting_section',
					array(
						'option_id'      => "wp_rest_api_controller_post_types_{$post_type_slug}",
						'post_type_name' => $post_type_name,
						'post_type_slug' => $post_type_slug,
					)
				);

				register_setting( 'wp-rest-api-controller', "wp_rest_api_controller_post_types_{$post_type_slug}" );
				$wp_rest_api_controller_post_types[] = $post_type_slug;

			}

			update_option( 'wp_rest_api_controller_post_types', $wp_rest_api_controller_post_types );
		}

		$taxonomies = $this->get_registered_taxonomies();

		if ( ! empty( $taxonomies ) ) {

			$wp_rest_api_controller_taxonomies = array();

			foreach ( $taxonomies as $tax_slug ) {

				add_settings_field(
					"wp_rest_api_controller_taxonomies_{$tax_slug}",
					$tax_slug,
					array( $this, 'wp_rest_api_controller_setting_section_setting_tax_callback_function' ),
					'wp-rest-api-controller',
					'wp_rest_api_controller_setting_section',
					array(
						'option_id' => "wp_rest_api_controller_taxonomies_{$tax_slug}",
						'tax_slug'  => $tax_slug,
					)
				);

				register_setting( 'wp-rest-api-controller', "wp_rest_api_controller_taxonomies_{$tax_slug}" );
				$wp_rest_api_controller_taxonomies[] = $tax_slug;

			}

			update_option( 'wp_rest_api_controller_taxonomies', $wp_rest_api_controller_taxonomies );
		}

		register_setting( 'wp-rest-api-controller', 'wp-rest-api-controller-active-tab' );
	}

	public function get_registered_post_types() {

		$post_types = get_post_types();

		// Excluded post types
		foreach ( $this->always_enabled_post_type_slugs as $slug ) {
			if ( isset( $post_types[ $slug ] ) ) {
				unset( $post_types[ $slug ] );
			}
		}

		return apply_filters( 'wp_rest_api_controller_post_types', $post_types );
	}

	public function get_registered_taxonomies() {
		$taxonomies = get_taxonomies();
		$excluded   = $this->get_excluded_taxonomies();

		foreach ( $taxonomies as $key => $tax_slug ) {
			if ( isset( $excluded[ $tax_slug ] ) ) {
				unset( $taxonomies[ $key ] );
			}
		}

		return apply_filters( 'wp_rest_api_controller_taxonomies', $taxonomies );
	}

	// ------------------------------------------------------------------
	// Settings section callback function
	// ------------------------------------------------------------------
	public function wp_rest_api_controller_setting_section_callback_function() {
		?>
		<div class="rest-controller-tabs">
			<ul id="rest-controller-tabs-list">
					<li class="active rest-controller-tabs-list-item active"><a data-tab="post-types">Post Types</a></li>
					<li class="rest-controller-tabs-list-item"><a data-tab="taxonomies">Taxonomies</a></li>
			</ul>
		</div>

		<p id="rest-api-controller-post-types" class="rest-api-controller-post-types rest-api-controller-section"> <?php esc_html_e( 'Toggle visibility of post types and select meta data to the REST API.', 'wp-rest-api-controller' ); ?> </p>
		<p id="rest-api-controller-taxonomies" class="rest-api-controller-taxonomies rest-api-controller-section"> <?php esc_html_e( 'Toggle visibility of taxonomies and select meta data to the REST API.', 'wp-rest-api-controller' ); ?> </p>
		<input type="hidden" id="rest-controller-active-tab" name="wp-rest-api-controller-active-tab" value="<?php echo esc_attr( get_option( 'wp-rest-api-controller-active-tab', 'post-types' ) ); ?>"/>
		<?php
	}

	// ------------------------------------------------------------------
	// Callback function for our example setting
	// ------------------------------------------------------------------
	public function wp_rest_api_controller_setting_section_setting_callback_function( $args ) {

		$post_type_object = get_post_type_object( $args['post_type_slug'] );
		$rest_base        = wp_rest_api_controller::get_post_type_rest_base( $args['post_type_slug'] );
		$singular_name    = ! empty( $post_type_object->labels ) && ! empty( $post_type_object->labels->singular_name ) ? $post_type_object->labels->singular_name : $args['post_type_name'];
		$options          = get_option( $args['option_id'], array(
			'active'    => 0,
			'meta_data' => array(),
		) );

		$active_state   =  isset( $options['active'] ) && 1 === absint( $options['active'] ) || ! empty( $post_type_object->show_in_rest ) && $post_type_object->show_in_rest === true;
		$disabled_attr  = $active_state ? '' : 'disabled=disabled';
		$post_type_meta = $this->retrieve_post_type_meta_keys( $args['post_type_slug'] );
		?>
		<!-- Anchor for our JS -->
		<span class="rest-api-controller-post-types rest-api-controller-section"></span>

		<!-- Display the checkboxes/descriptions -->
		<label class="switch switch-green">
			<input name="<?php echo esc_attr( $args['option_id'] ); ?>[active]" type="checkbox" class="switch-input" onchange="toggleEndpointLink(this);" value="1" <?php checked( 1, $active_state );?>>
			<span class="switch-label" data-on="<?php esc_attr_e( 'Enabled', 'wp-rest-api-controller' ); ?>" data-off="<?php esc_attr_e( 'Disabled', 'wp-rest-api-controller' ); ?>"></span>
			<span class="switch-handle"></span>
		</label>

		<section class="rest-api-endpoint-container<?php if ( ! $active_state ) { echo ' hidden-container'; } ?>">

			<!-- API Endpoint Example -->
			<p class="description">

				<small class="edit-post-type-rest-base-disabled">
					<?php printf( esc_attr( '%s', 'wp-rest-api-controller' ), '<span class="top-right tipso edit-rest-permalink-icon" data-tipso-title="' . esc_attr__( 'REST Endpoint', 'wp-rest-api-controller' ) . '" data-tipso="' . sprintf( esc_attr__( 'Access the %s post type via the REST API at the following URL.', 'wp-rest-api-controller' ), esc_attr( $singular_name ) ) . '"><span class="dashicons dashicons-editor-help"></span></span><a class="endpoint-link" ' . esc_attr( $disabled_attr ) . ' href="' . esc_url( $this->rest_endpoint_base . $rest_base ) . '" target="_blank">' . esc_url( $this->rest_endpoint_base . $rest_base ) ); ?></a>
					<a href="#" onclick="toggleRestBaseVisbility(this,event);" class="button-secondary edit-endpoint edit-endpoint-secondary-btn" class=""><?php esc_attr_e( 'Edit Endpoint', 'wp-rest-api-controller' ); ?></a>
				</small>

				<small class="edit-post-type-rest-base-active" style="display:none;">
					<?php echo esc_url( $this->rest_endpoint_base ); ?>
					<input class="inline-input" type="text" data-rest-base="<?php echo esc_url( $this->rest_endpoint_base ); ?>" name="<?php echo esc_attr( $args['option_id'] ); ?>[rest_base]" value="<?php echo esc_attr( $rest_base ); ?>">
					<a href="#" onclick="toggleRestBaseVisbility(this,event);" class="button-secondary save-endpoint edit-endpoint-secondary-btn" class=""><?php esc_attr_e( 'Save New Endpoint', 'wp-rest-api-controller' ); ?></a>
				</small>

				<!-- updated API endpoint notice -->
				<span class="rest-api-endpoint-updated rest-api-controller-warning-notice">
					<span class="dashicons dashicons-info"></span>
					<?php esc_attr_e( 'This endpoint was updated. You need to re-save the settings to access this post type at the endpoint above.', 'wp-rest-api-controller' ); ?>
				</span>
			</p>

			<!-- End API Endpoint Example -->

		</section>

		<!-- Only if post type meta is assigned here -->
		<?php if ( $post_type_meta && ! empty( $post_type_meta ) ) { ?>
			<section class="object-meta-data post-type-meta-data<?php if ( ! $active_state ) { echo ' hidden-container'; } ?>">
				<table class="widefat fixed rest-api-controller-meta-data-table" cellspacing="0">
					<thead>
						<tr>
							<th id="cb" class="manage-column column-cb check-column" scope="col">
								<label class="switch switch-green">
									<input name="" type="checkbox" class="switch-input all-meta-switch-input" value="1">
									<span class="switch-label" data-on="<?php esc_attr_e( 'Diable All', 'wp-rest-api-controller' ); ?>" data-off="<?php esc_attr_e( 'Enable All', 'wp-rest-api-controller' ); ?>"></span>
									<span class="switch-handle"></span>
								</label>
							</th>
							<th id="columnname" class="manage-column column-columnname" scope="col"><span class="top-right tipso" data-tipso-title="<?php esc_attr_e( 'Meta Key', 'wp-rest-api-controller' ); ?>" data-tipso="<?php esc_attr_e( 'This is the default meta key stored by WordPress.', 'wp-rest-api-controller' ); ?>"><?php esc_attr_e( 'Meta Key', 'wp-rest-api-controller' ); ?></span></th>
							<th id="columnname" class="manage-column column-columnname" scope="col"><span class="top-right tipso" data-tipso-title="<?php esc_attr_e( 'Custom Meta Key', 'wp-rest-api-controller' ); ?>" data-tipso="<?php esc_attr_e( 'Specify a custom meta key to use instead of the default.', 'wp-rest-api-controller' ); ?>"><?php esc_attr_e( 'Custom Meta Key', 'wp-rest-api-controller' ); ?></span></th>
						</tr>
					</thead>
					<tbody>
						<?php
						$x = 1;
						foreach ( $post_type_meta as $meta_key ) {
							$meta_active_state = isset( $options['meta_data'][ $meta_key ]['active'] );
							$custom_meta_key   = isset( $options['meta_data'][ $meta_key ]['custom_key'] ) ? $options['meta_data'][ $meta_key ]['custom_key'] : '';
							?>
								<tr class="<?php echo ( 0 === $x % 2 ) ? '' : 'alternate'; ?>">
									<th class="check-column" scope="row">
										<label class="switch small switch-green">
											<input name="<?php echo esc_attr( $args['option_id'] ); ?>[meta_data][<?php echo esc_attr( $meta_key ); ?>][active]" type="checkbox" class="switch-input meta-switch-input" value="1" <?php checked( 1, $meta_active_state );?>>
											<span class="switch-label" data-on="<?php esc_attr_e( 'On', 'wp-rest-api-controller' ); ?>" data-off="<?php esc_attr_e( 'Off', 'wp-rest-api-controller' ); ?>"></span>
											<span class="switch-handle"></span>
										</label>
									</th>
									<td><?php echo esc_attr( $meta_key ); ?></td>
									<td>
										<input name="<?php echo esc_attr( $args['option_id'] ); ?>[meta_data][<?php echo esc_attr( $meta_key ); ?>][original_meta_key]" type="hidden" value="<?php echo esc_attr( $meta_key ); ?>">
										<input name="<?php echo esc_attr( $args['option_id'] ); ?>[meta_data][<?php echo esc_attr( $meta_key ); ?>][custom_key]" type="text" value="<?php echo esc_attr( $custom_meta_key ); ?>" placeholder="<?php echo esc_attr( $meta_key ); ?>">
									</td>
								</tr>
							<?php
							$x++;
						}
						?>
					</tbody>
				</table>
			</section>
		<?php } ?>
		<!-- Description -->
		<p class="description"><?php printf( esc_attr__( 'Expose the %s post type to the REST API.', 'wp-rest-api-controller' ), '<code>' . esc_attr( $singular_name ) . '</code>' ); ?></p>
		<?php
	}

	public function wp_rest_api_controller_setting_section_setting_tax_callback_function( $args ) {
		$taxonomy = get_taxonomy( $args['tax_slug'] );

		$options = get_option( $args['option_id'], array(
			'active'    => 0,
			'meta_data' => array(),
			'rest_base' => ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $args['tax_slug'],
		));

		$active_state  = isset( $options['active'] ) && 1 === absint( $options['active'] ) || ! empty( $taxonomy->show_in_rest ) && $taxonomy->show_in_rest === true;
		$rest_base     = ! empty( $options['rest_base'] ) ? $options['rest_base'] : $args['tax_slug'];
		$taxonomy_meta = $this->retrieve_taxonomy_meta_keys( $taxonomy->name );
		?>

		<span class="rest-api-controller-taxonomies rest-api-controller-section"></span>

		<!-- Display the checkboxes/descriptions -->
		<label class="switch switch-green">
			<input name="<?php echo esc_attr( $args['option_id'] ); ?>[active]" type="checkbox" class="switch-input" onchange="toggleEndpointLink(this);" value="1" <?php checked( 1, $active_state );?>>
			<span class="switch-label" data-on="<?php esc_attr_e( 'Enabled', 'wp-rest-api-controller' ); ?>" data-off="<?php esc_attr_e( 'Disabled', 'wp-rest-api-controller' ); ?>"></span>
			<span class="switch-handle"></span>
		</label>

		<section class="rest-api-endpoint-container<?php if ( ! $active_state ) { echo ' hidden-container'; } ?>">

			<!-- API Endpoint Example -->
			<p class="description">

				<small class="edit-post-type-rest-base-disabled">
					<?php printf( esc_attr( '%s', 'wp-rest-api-controller' ), '<span class="top-right tipso edit-rest-permalink-icon" data-tipso-title="' . esc_attr__( 'REST Endpoint', 'wp-rest-api-controller' ) . '" data-tipso="' . sprintf( esc_attr__( 'Access the %s taxonomy via the REST API at the following URL.', 'wp-rest-api-controller' ), esc_attr( $taxonomy->labels->menu_name ) ) . '"><span class="dashicons dashicons-editor-help"></span></span><a class="endpoint-link" href="' . esc_url( $this->rest_endpoint_base . $rest_base ) . '" target="_blank">' . esc_url( $this->rest_endpoint_base . $rest_base ) ); ?></a>
					<a href="#" onclick="toggleRestBaseVisbility(this,event);" class="button-secondary edit-endpoint edit-endpoint-secondary-btn" class=""><?php esc_attr_e( 'Edit Endpoint', 'wp-rest-api-controller' ); ?></a>
				</small>

				<small class="edit-post-type-rest-base-active" style="display:none;">
					<?php echo esc_url( $this->rest_endpoint_base ); ?>
					<input class="inline-input" type="text" data-rest-base="<?php echo esc_url( $this->rest_endpoint_base ); ?>" name="<?php echo esc_attr( $args['option_id'] ); ?>[rest_base]" value="<?php echo esc_attr( $rest_base ); ?>">
					<a href="#" onclick="toggleRestBaseVisbility(this,event);" class="button-secondary save-endpoint edit-endpoint-secondary-btn" class=""><?php esc_attr_e( 'Save New Endpoint', 'wp-rest-api-controller' ); ?></a>
				</small>

				<!-- updated API endpoint notice -->
				<span class="rest-api-endpoint-updated rest-api-controller-warning-notice">
					<span class="dashicons dashicons-info"></span>
					<?php esc_attr_e( 'This endpoint was updated. You need to re-save the settings to access this post type at the endpoint above.', 'wp-rest-api-controller' ); ?>
				</span>
			</p>

			<!-- End API Endpoint Example -->

		</section>

		<!-- Only if post type meta is assigned here -->
		<?php if ( $taxonomy_meta && ! empty( $taxonomy_meta ) ) { ?>
			<section class="object-meta-data taxonomy-meta-data<?php if ( ! $active_state ) { echo ' hidden-container'; } ?>">
				<table class="widefat fixed rest-api-controller-meta-data-table" cellspacing="0">
					<thead>
						<tr>
							<th id="cb" class="manage-column column-cb check-column" scope="col">
								<label class="switch switch-green">
									<input name="" type="checkbox" class="switch-input all-meta-switch-input" value="1">
									<span class="switch-label" data-on="<?php esc_attr_e( 'Diable All', 'wp-rest-api-controller' ); ?>" data-off="<?php esc_attr_e( 'Enable All', 'wp-rest-api-controller' ); ?>"></span>
									<span class="switch-handle"></span>
								</label>
							</th>
							<th id="columnname" class="manage-column column-columnname" scope="col"><span class="top-right tipso" data-tipso-title="<?php esc_attr_e( 'Meta Key', 'wp-rest-api-controller' ); ?>" data-tipso="<?php esc_attr_e( 'This is the default meta key stored by WordPress.', 'wp-rest-api-controller' ); ?>"><?php esc_attr_e( 'Meta Key', 'wp-rest-api-controller' ); ?></span></th>
							<th id="columnname" class="manage-column column-columnname" scope="col"><span class="top-right tipso" data-tipso-title="<?php esc_attr_e( 'Custom Meta Key', 'wp-rest-api-controller' ); ?>" data-tipso="<?php esc_attr_e( 'Specify a custom meta key to use instead of the default.', 'wp-rest-api-controller' ); ?>"><?php esc_attr_e( 'Custom Meta Key', 'wp-rest-api-controller' ); ?></span></th>
						</tr>
					</thead>
					<tbody>
						<?php
						$x = 1;
						foreach ( $taxonomy_meta as $meta_key ) {
							$meta_active_state = isset( $options['meta_data'][ $meta_key ]['active'] );
							$custom_meta_key   = isset( $options['meta_data'][ $meta_key ]['custom_key'] ) ? $options['meta_data'][ $meta_key ]['custom_key'] : '';
							?>
								<tr class="<?php echo ( 0 === $x % 2 ) ? '' : 'alternate'; ?>">
									<th class="check-column" scope="row">
										<label class="switch small switch-green">
											<input name="<?php echo esc_attr( $args['option_id'] ); ?>[meta_data][<?php echo esc_attr( $meta_key ); ?>][active]" type="checkbox" class="switch-input meta-switch-input" value="1" <?php checked( 1, $meta_active_state );?>>
											<span class="switch-label" data-on="<?php esc_attr_e( 'On', 'wp-rest-api-controller' ); ?>" data-off="<?php esc_attr_e( 'Off', 'wp-rest-api-controller' ); ?>"></span>
											<span class="switch-handle"></span>
										</label>
									</th>
									<td><?php echo esc_attr( $meta_key ); ?></td>
									<td>
										<input name="<?php echo esc_attr( $args['option_id'] ); ?>[meta_data][<?php echo esc_attr( $meta_key ); ?>][original_meta_key]" type="hidden" value="<?php echo esc_attr( $meta_key ); ?>">
										<input name="<?php echo esc_attr( $args['option_id'] ); ?>[meta_data][<?php echo esc_attr( $meta_key ); ?>][custom_key]" type="text" value="<?php echo esc_attr( $custom_meta_key ); ?>" placeholder="<?php echo esc_attr( $meta_key ); ?>">
									</td>
								</tr>
							<?php
							$x++;
						}
						?>
					</tbody>
				</table>
			</section>
		<?php } ?>
		<!-- Description -->
		<p class="description"><?php printf( esc_attr__( 'Expose the %s taxonomy to the REST API.', 'wp-rest-api-controller' ), '<code>' . esc_attr( $taxonomy->labels->menu_name ) . '</code>' ); ?></p>
		<?php
	}

	/**
	 * retrieve the meta data assigned to a post, and cache it in a transient
	 * Note: This only retreives meta that has already been stored. If the meta has been
	 * registered, but no post has any meta assigned to it - it will not display.
	 *
	 * @param  string $post_type The post type name to retreive meta data for.
	 * @return array             The array of meta data for the given post type.
	 */
	public function retrieve_post_type_meta_keys( $post_type ) {

		if ( defined( 'WP_DEBUG' ) && WP_DEBUG || false === ( $meta_keys = get_transient( $post_type . '_meta_keys' ) ) ) {

			global $wpdb;
			$query = "
				SELECT DISTINCT($wpdb->postmeta.meta_key)
				FROM $wpdb->posts
				LEFT JOIN $wpdb->postmeta
				ON $wpdb->posts.ID = $wpdb->postmeta.post_id
				WHERE $wpdb->posts.post_type = '%s'
			";

			$meta_keys = $wpdb->get_col( $wpdb->prepare( $query, $post_type ) );
			$meta_keys = array_filter( $meta_keys );

			set_transient( $post_type . '_meta_keys', $meta_keys, DAY_IN_SECONDS );

		}

		return $meta_keys;
	}

	/**
	 * retrieve the meta data assigned to a post, and cache it in a transient
	 * Note: This only retreives meta that has already been stored. If the meta has been
	 * registered, but no post has any meta assigned to it - it will not display.
	 *
	 * @param  string $tax_slug  The post type name to retreive meta data for.
	 * @return array             The array of meta data for the given post type.
	 */
	public function retrieve_taxonomy_meta_keys( $tax_slug ) {
		if ( defined( 'WP_DEBUG' ) && WP_DEBUG || false === ( $meta_keys = get_transient( $tax_slug . '_meta_keys' ) ) ) {

			global $wpdb;
			$query = "
				SELECT DISTINCT($wpdb->termmeta.meta_key)
				FROM $wpdb->terms
				LEFT JOIN $wpdb->termmeta
				ON $wpdb->terms.term_id = $wpdb->termmeta.term_id
				LEFT JOIN $wpdb->term_taxonomy
				ON $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id
				WHERE $wpdb->term_taxonomy.taxonomy = '%s'
			";

			$meta_keys = $wpdb->get_col( $wpdb->prepare( $query, $tax_slug ) );
			$meta_keys = array_filter( $meta_keys );

			set_transient( $tax_slug . '_meta_keys', $meta_keys, DAY_IN_SECONDS );
		}

		return $meta_keys;
	}

	/**
	 * Clear The REST API Controller Transients
	 *
	 * @since 1.0.1
	 */
	public function wp_rest_api_controller_delete_api_cache() {

		if ( isset( $_POST['clear-wp-rest-api-controller-cache'] ) ) {

			if ( ! isset( $_POST['clear_wp_rest_api_controller_cache'] ) || ! wp_verify_nonce( $_POST['clear_wp_rest_api_controller_cache'], 'clear_wp_rest_api_controller_cache' ) ) {

				wp_safe_redirect( add_query_arg( array(
					'api-cache-cleared' => 'false',
				), admin_url( 'tools.php?page=wp-rest-api-controller-settings' ) ) );

				exit;

			} else {

				$post_types = wp_rest_api_controller::get_stored_post_types();

				if ( $post_types && ! empty( $post_types ) ) {
					foreach ( $post_types as $post_type_slug => $post_type_data ) {
						delete_transient( "{$post_type_slug}_meta_keys" );
					}
				}

				$taxonomies = $this->get_registered_taxonomies();

				if ( $taxonomies && ! empty( $taxonomies ) ) {
					foreach ( $taxonomies as $tax_slug ) {
						delete_transient( "{$tax_slug}_meta_keys" );
					}
				}

				wp_safe_redirect( add_query_arg( array(
					'api-cache-cleared' => 'true',
				), admin_url( 'tools.php?page=wp-rest-api-controller-settings' ) ) );
				exit;
			}
		}

	}
}

$settings = new wp_rest_api_controller_Settings();

Youez - 2016 - github.com/yon3zu
LinuXploit