Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. function hideFromUnknownUsers($postObject) {
  2. $rcUserLevel = get_post_meta ( $postObject->ID, 'rcUserLevel', true );
  3.  
  4. if(have_posts())
  5. {
  6. if (!(
  7. !current_user_can ( 'read' ) &&
  8. (
  9. $rcUserLevel == 'Administrator' ||
  10. $rcUserLevel == 'Editor' ||
  11. $rcUserLevel == 'Author' ||
  12. $rcUserLevel == 'Contributor' ||
  13. $rcUserLevel == 'Subscriber'
  14. )
  15. )) {
  16. the_post();
  17. }
  18. }
  19. }
  20.  
  21. add_action ( 'the_post', 'hideFromUnknownUsers' );
  22.  
  23. function wpse225120_hide_posts_from_guests( $query ) {
  24. // If the user's logged in, exit the function now.
  25. if( is_user_logged_in() )
  26. return;
  27.  
  28. // Get the current metadata query so we can alter it instead of overwriting it
  29. $meta_query = $query->get( 'meta_query' );
  30.  
  31. // Create a meta-query filtering out hidden posts
  32. $hidden_meta_query = array(
  33. 'relation' => 'OR',
  34. array(
  35. 'key' => 'hide_from_guests',
  36. 'value' => 'false'
  37. ),
  38. array(
  39. 'key' => 'hide_from_guests',
  40. 'compare' => 'NOT_EXISTS'
  41. )
  42. );
  43.  
  44. // If there's not already a meta-query, supply the one for hidden posts and exit
  45. if( ! is_array( $meta_query ) || empty( $meta_query ) ) {
  46. $query->set( 'meta_query', $hidden_meta_query );
  47. return;
  48. }
  49.  
  50. // If there is an existing meta-query, modify it to support our new hidden posts
  51. // meta-query as a top-level 'AND' condition, if need be
  52. if( isset( $meta_query[ 'relation' ] ) && 'OR' === $meta_query[ 'relation' ] )
  53. $meta_query = array(
  54. 'relation' => 'AND',
  55. $meta_query
  56. );
  57. }
  58.  
  59. // Add the hidden posts meta-query and overwrite $query's old meta-query
  60. $meta_query[] = $hidden_meta_query;
  61. $query->set( 'meta_query', $meta_query );
  62. }
  63. add_action( 'pre_get_posts', 'wpse225120_hide_posts_from_guests' );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement