Skip to content

Instantly share code, notes, and snippets.

@Crocoblock
Last active October 21, 2024 18:20
Show Gist options
  • Save Crocoblock/7669eb507cb3742836bbec67fc908eef to your computer and use it in GitHub Desktop.
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>/
<?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 );
@HelaG27
Copy link

HelaG27 commented Oct 21, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment