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: .png
And After: .png
Any help would be appreciated. Thank you in advance.
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.sstatic/dVvLb.png
And After: https://i.sstatic/aNqWX.png
Any help would be appreciated. Thank you in advance.
Share Improve this question asked Oct 30, 2020 at 10:47 Zan KraljZan Kralj 133 bronze badges1 Answer
Reset to default 0It'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() ) {
return;
}
// 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() ) {
return;
}
// We only need to modify the query for logged in users.
if ( ! is_user_logged_in() ) {
return;
}
// Modify the query as needed...
}
add_action( 'pre_get_posts', 'my_get_posts' ); // Note that pre_get_posts is an action, not a filter.