Home › Forums › Backend Issues (wp-admin) › Check if value already exist 2 › Reply To: Check if value already exist 2
Hey, I answered that question and I’ve recently run into the same issue in my own code. The problem is that the global $post does not have a value and there isn’t any way to get the current post id during the ajax call that is validating the field value.
This is a bit complicated.
The first thing that I did was to create a custom field named hidden_post_id
, then I created an acf/load_value
to add the current post id of the post being edited
add_filter('acf/load_value/name=hidden_post_id', 'add_post_id_as_value'), 10, 3);
function add_post_id_as_value($value, $post_id, $field) {
return $post_id;
}
The next step was to actually hide this field from the person editing the post. I did this by adding some custom admin CSS
add_action('admin_head', array($this, 'hide_post_id_field'));
function hide_post_id_field() {
?>
<style type="text/css">
.acf-fields div[data-name="hidden_post_id"] {
display: none;
}
</style>
<?php
}
Then you need to alter your validation function to get this value an use it instead of using $post->ID
add_filter('acf/validate_value/name=lien_video', 'validate_lien_video_filter', 10, 4);
function validate_lien_video_filter($valid, $value, $field, $input) {
$post_id_field_key = 'field_568ad9d81e788';
if (!$valid || $value == '' || !isset($_POST['acf'][$post_id_field_key])) {
return $valid;
}
// change the field key below to the field key for your
// hide_post_id_field field
$post_id = $_POST['acf'][$post_id_field_key];
global $post;
$args = array(
'post_type' => 'videos', // or your post
'post__not_in' => array($post_id), // do not check this post
'meta_query' => array(
array(
'key' => 'lien_video',
'value' => $value
)
)
);
$query = new WP_Query($args);
if (count($query->posts)) {
// found at least one post that
// already has $value
$valid = 'There is already a post using this video';
}
return $valid;
}
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.