J'ai besoin de lister dans un menu de la barre latérale toutes les pages enfants de la page parente actuelle. Les pages enfants sont limitées à l'affichage par les rôles d'utilisateur, disons "A" et "B" pour l'instant. J'utilise le " Membres Plugin " pour gérer ça.
J'ai créé une fonction qui fonctionne assez bien pour lister ces pages enfants, mais je ne trouve pas le moyen de ne pas répertorier les pages enfants auxquelles l'utilisateur actuel n'a pas accès.
Donc, si je suis connecté en tant qu'utilisateur avec le rôle "A", je ne peux pas voir les pages enfants auxquelles le rôle "B" a accès, et vice versa.
Toute aide/allusion serait appréciée.
Je vous remercie !
Si la Rol
est dans la méta, vous devez obtenir les identifiants de chacun d'eux, puis comparer le rôle d'accès aux méta au nombre d'utilisateurs:
$post_parent_ID = $post->post_parent ? $post->post_parent : $post->ID;
$title = $post->post_parent ? get_the_title( $post->post_parent ) : get_the_title( $post->ID );
//we use get posts to get all posts for the given ID
$children_pages_array = get_posts(array('numberposts' => -1, 'post_status' => 'publish', 'post_type' => 'any', 'post_parent' => $post_parent_ID, 'suppress_filters' => false));
//we get the user rol
$user_role = sb_get_user_role();
//here we create an array that will be populated with IDs
$ID_pages_rol_array = array();
foreach ($children_pages_array as $child_page_obj) {
//we get the rol that can access this page
$page_role = get_post_meta($child_page_obj->ID, '_members_access_role');
//do the current user rol have access to this page?
if ($page_role == $user_role) {
//yes it does add to the IDs of pages that this rol can access
array_Push($ID_pages_rol_array, $child_page_obj->ID);
}
}
$children = wp_list_pages(array(
'title_li' => '',
'include' => $ID_pages_rol_array, //lets send those IDs to be formatted as list items
'echo' => 0,
'depth' => 1
));
vous pouvez obtenir les identifiants avec get_posts
(en fait, l'objet de publication entier) après avoir créé le tableau d'identifiants autorisés, qui peut être envoyé à wp_list_pages
.