I've got a local Wordpress install that I've tried to make customisable by users, so it only shows pages from categories they have selected. I've used the code that I've found in the thread How to Set an Individual Homepage for Each User? and while it works, it breaks the menu on every page, it just dissapears.

Example before: https://i.stack.imgur.com/dVvLb.png

And After: https://i.stack.imgur.com/aNqWX.png

Any help would be appreciated. Thank you in advance.


It's important to add guard clauses to prevent modification of other queries. (For example, menus). We are trying to modify the main query here, so we should bail if this is not the main query.

function my_get_posts( $query ) {

    // Bail if this is not the main query.
    if ( ! $query->is_main_query() ) {

    // Other guard clauses to ensure we don't affect queries unintentionally.
    // Sounds like you are just trying to target the homepage, so we could check for that too.
    if ( ! is_home() ) {
    // We only need to modify the query for logged in users.
    if ( ! is_user_logged_in() ) {
    // Modify the query as needed...

add_action( 'pre_get_posts', 'my_get_posts' ); // Note that pre_get_posts is an action, not a filter.
  • 1
    Yep, that was it. You very much. I did not use the second guard clause because I'm okay with other pages having the same filter, but thank you for posting it anyway.
    – Zan Kralj
    Nov 2 '20 at 7:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.