acf_revisions::acf_validate_post_idpublicACF 5.5.10

acf_validate_post_id

This function will modify the $post_id and allow loading values from a revision

Method of the class: acf_revisions{}

No Hooks.

Returns

$post_id. (int)

Usage

$acf_revisions = new acf_revisions();
$acf_revisions->acf_validate_post_id( $post_id, $_post_id );
$post_id(required)
.
$_post_id(required)
.

Changelog

Since 5.5.10 Introduced.

acf_revisions::acf_validate_post_id() code ACF 6.0.4

function acf_validate_post_id( $post_id, $_post_id ) {

	// phpcs:disable WordPress.Security.NonceVerification.Recommended
	// bail early if no preview in URL
	if ( ! isset( $_GET['preview'] ) ) {
		return $post_id;
	}

	// bail early if $post_id is not numeric
	if ( ! is_numeric( $post_id ) ) {
		return $post_id;
	}

	// vars
	$k          = $post_id;
	$preview_id = 0;

	// check cache
	if ( isset( $this->cache[ $k ] ) ) {
		return $this->cache[ $k ];
	}

	// validate
	if ( isset( $_GET['preview_id'] ) ) {

		$preview_id = (int) $_GET['preview_id'];

	} elseif ( isset( $_GET['p'] ) ) {

		$preview_id = (int) $_GET['p'];

	} elseif ( isset( $_GET['page_id'] ) ) {

		$preview_id = (int) $_GET['page_id'];

	}
	// phpcs:enable WordPress.Security.NonceVerification.Recommended

	// bail early id $preview_id does not match $post_id
	if ( $preview_id != $post_id ) {
		return $post_id;
	}

	// attempt find revision
	$revision = acf_get_post_latest_revision( $post_id );

	// save
	if ( $revision && $revision->post_parent == $post_id ) {

		$post_id = (int) $revision->ID;

	}

	// set cache
	$this->cache[ $k ] = $post_id;

	// return
	return $post_id;

}