The page hidden link includes a view to show the "eigendommen" posts BUT the page should ONLY SHOW "kopers" the "eigendommen" posts for which they have been "connected" via the relationship "kopers eigendommen".
Here's an example:
Let's say there are the following eigendommen (post type "eigendommen"):
- eigendom A.
- eigendom B.
- eigendom C.
Koper A (post type "kopers") has been connected to eigendom A and B.
Koper A should ONLY SEE eigendommen A and B on the page "hidden link" AND NOT eigendom C.
Each "koper" user will have a single post in the post type "kopers" and he/she will be set as the author of that post.
We've connected the user/koper demo@landman.re to several eigendommen for testing purposes.
What query filter or code snippet should we apply to achieve the above behavior?
- View ID "5663" for the view "Introductie ingelogde gebruikers", with the view ID "84396" for the view "Eigendommen - kaart met filters - acquisitie opportuniteiten professionele kopers".
- The post type slug "vakexpert" with "koper".
- The relationship slug "vakexpert-introductie" with "koper-eigendom".
add_filter( 'wpv_filter_query', 'wpv_filter_query_84396_func', 1000 , 3 );
function wpv_filter_query_84396_func( $query_args, $view_settings ) {
// skip if blocks edit screen
if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) {
return $query_args;
}
// process if specific view
if ( ( isset($view_settings['view_id']) && $view_settings['view_id'] == 84396) ) {
$current_user_id = get_current_user_id();
if($current_user_id > 0) {
// get current user's "koper" post
$args = array(
'post_type' => 'koper',
'posts_per_page' => 1,
'post_status' => 'publish',
'author' => $current_user_id,
'fields' => 'ids',
);
$posts_array = get_posts( $args );
if(!empty($posts_array)) {
$query_args['toolset_relationships'] = array( 'role' => 'child', 'related_to' => $posts_array[0], 'relationship' => 'koper-eigendom' );
}
else
{
// setting the post type to a non-existent post type so that no results are shown
$query_args['post_type'] = 'xyz';
}
}
else
{
// setting the post type to a non-existent post type so that no results are shown
$query_args['post_type'] = 'xyz';
}
}
return $query_args;
}
During troubleshooting, I noticed custom code snippet seems to be working correctly, but, the "demo" user ( email: "demo@landman.re" and user ID: "759" ) that you're testing with, has no "Kopers" post, as an author. hidden link
I had to turn on the "author" option from the "Kopers" post type's settings and you'll now see the author column in the post list.
( screenshot: hidden link )
You'll also see the author field on the edit screen for the single "Kopers" post.
( screenshot: hidden link )
You can set the "demo" user as the author of the most recent "landman" "Kopers" post and you'll see that exactly 21 results will be shown by the view, as 21 eigendommen posts are connected to this "landman" kopers post.