Last active
October 21, 2024 18:20
-
-
Save Crocoblock/7669eb507cb3742836bbec67fc908eef to your computer and use it in GitHub Desktop.
JetEngine. Profile Builder. Allow to add single user page without base page slug in the URL. Final URL format will be - site.url/<username|id|nicename>/<profile-subpage>/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* You need to set up single user base page in the settings anyway, because it need to grab a content. | |
* The only limitation - will not work without subpage slug in the URL. | |
*/ | |
// add rewrite rules | |
add_filter( 'jet-engine/profile-builder/rewrite-rules', function( $rules, $manager ) { | |
$pages = \Jet_Engine\Modules\Profile_Builder\Module::instance()->settings->get_pages(); | |
$user_page = ! empty( $pages['single_user_page'] ) ? absint( $pages['single_user_page'] ) : false; | |
if ( $user_page ) { | |
$page_object = get_page( $user_page ); | |
if ( $page_object ) { | |
$slug = $page_object->post_name; | |
$raw_data = \Jet_Engine\Modules\Profile_Builder\Module::instance()->settings->get( 'user_page_structure', [] ); | |
$subpage_rewrites = []; | |
foreach ( $raw_data as $subpage ) { | |
$subpage_rewrites[ '([^/]+)/' . $subpage['slug'] . '/?' ] = 'pagename=' . $slug . '&' . $manager->page_var . '=single_user_page&' . $manager->user_var . '=$matches[1]&' . $manager->subpage_var . '=' . $subpage['slug']; | |
} | |
$rules = array_merge( $subpage_rewrites, $rules ); | |
} | |
} | |
return $rules; | |
}, 10, 2 ); | |
// change default subpage URL | |
add_filter( 'jet-engine/profile-builder/subpage-url', function( $url, $slug, $page, $subpage, $manager ) { | |
if ( 'single_user_page' === $page ) { | |
if ( ! $slug ) { | |
$slug = $subpage['slug']; | |
} | |
$url = home_url( | |
'/' . \Jet_Engine\Modules\Profile_Builder\Module::instance()->query->get_queried_user_slug() . '/' . $slug . '/' | |
); | |
} | |
return $url; | |
}, 10, 5 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
How can this code be modified to create a custom URL for a single user page. I need my urls to be site.url/@alias where alias is a user meta field.