To build multi-user webapps with acf_form() there is a need of an option to restrict the relationship fields posts/choices to the current logged-in user.
This solves it.
http://www.advancedcustomfields.com/resources/acf-fields-relationship-query/
function my_relationship_query( $args, $field, $post ) {
// get posts for current logged in user
$args['author'] = get_current_user_id();
return $args;
}
add_filter('acf/fields/relationship/query/key=<field_key>', 'my_relationship_query', 10, 3);
should this go in functions.php? I add the field_key and could not get it to work (shows all posts, or CPT)
I also tried name with similar results.
I hate writing this because I know this isn’t a lot to go on. Any idea of what I could look at?
After attempting to use more basic functions, I can’t seem to use any of them. if I use the_field the page crashes immediately as it’s called. I’m sure I’m missing something very basic.
Hi folk,
I had the quite similar issue. I needed also to grant a full access to “editor” & “administrator”.
Here is the code inserted in the functions.php
file
function modify_field( $args, $field,$post) {
if( !check_user_role(array('editor','administrator')) ){
$args['author'] = get_current_user_id();
}
return $args;
}
add_filter( 'acf/fields/post_object/query/key=field_XXX..XXX', 'modify_field', 10, 3 );
/* @src & @credits https://wp-mix.com/wordpress-check-user-roles/ */
function check_user_role($roles, $user_id = null) {
if ($user_id) $user = get_userdata($user_id);
else $user = wp_get_current_user();
if (empty($user)) return false;
foreach ($user->roles as $role) {
if (in_array($role, $roles)) {
return true;
}
}
return false;
}
use “name” instead of “key” like this
add_filter(‘acf/fields/relationship/query/name=<field_key>’, ‘my_relationship_query’, 10, 3);
@johann @mica
Thank you i searched a lot finally found how to do it!
Is there a chance to additionally modify the function to only return the posts which are publish? So a combination of only posts of current author id and only published posts of that author?
thanks