logo

Profile URL στο bbPress

Profile URL στο bbPress

Ετικέτες: bbpress

Το bbPress δυστυχώς βάζει το username στο url των χρηστών και μπορούν να τα δώσουν όσοι/ες συμμετέχουν στο φόρουμ. Μπορείτε να δείτε και την σχετική συζήτηση εδώ. Αυτό όπως καταλαβαίνεται είναι λίγο άβολο για του χρήστες και όχι και τόσο ασφαλές. Για αυτό το αλλάξαμε στο nicename, το δημόσιο προφιλ τους με τον ακόλουθο τρόπο. Ο sanitizer είναι απαραίτητος και προσαρμοσμένος στα ελληνικά.

//This is used to hide the username from the profile url
function tpp_forum_profile_url( $user_id, $old_values) {
	$user = get_user_by( 'ID', $user_id );	
		$display_name = $user->data->display_name;	
	if ( $user ) {
		if ( $user->data->user_status == 0 && $display_name ) {
			$new_user_nicename = tpp_sanitize_title($display_name );
			if ( strlen ( $new_user_nicename ) > 50 ) {
				$new_user_nicename = substr ( $new_user_nicename, 0, 50 );
			}				
			if ( $user->data->user_nicename != $new_user_nicename ) { 
				$args = array(
					'ID'            => $user->ID,
					'user_nicename' => $new_user_nicename
				);
				wp_update_user( $args );
				wp_redirect( get_site_url().'/forums/user/'.$new_user_nicename.'/edit/' ); 
				exit;					
			}
		}
	}
}
add_action( 'profile_update',  'tpp_forum_profile_url', 100, 5 );
function tpp_sanitize_title($title) {

	if (seems_utf8($title)) {
		if (function_exists('mb_strtolower')) {
			$title = mb_strtolower($title, 'UTF-8');
		}
	}

	$title = strtolower($title);
	$title = str_replace('.', '-', $title);
	$title = preg_replace('/\s+/', '-', $title);
	$title = preg_replace('|-+|', '-', $title);
	$title = trim($title, '-');

	$title = htmlspecialchars(urldecode($title));

	$expressions = array(

		'/[αάΑΆ]/u'   => 'a',
		'/[βΒ]/u'     => 'v',
		'/[γΓ]/u'     => 'g',
		'/[δΔ]/u'     => 'd',
		'/[εέΕΈ]/u'   => 'e',
		'/[ζΖ]/u'     => 'z',
		'/[ηήΗΉ]/u'   => 'i',
		'/[θΘ]/u'     => 'th',
		'/[ιίϊΙΊΪ]/u' => 'i',
		'/[κΚ]/u'     => 'k',
		'/[λΛ]/u'     => 'l',
		'/[μΜ]/u'     => 'm',
		'/[νΝ]/u'     => 'n',
		'/[ξΞ]/u'     => 'x',
		'/[οόΟΌ]/u'   => 'o',
		'/[πΠ]/u'     => 'p',
		'/[ρΡ]/u'     => 'r',
		'/[σςΣ]/u'    => 's',
		'/[τΤ]/u'     => 't',
		'/[υύϋΥΎΫ]/u' => 'y',
		'/[φΦ]/iu'    => 'f',
		'/[χΧ]/u'     => 'ch',
		'/[ψΨ]/u'     => 'ps',
		'/[ωώ]/iu'    => 'o',
		'/[αΑ][ιίΙΊ]/u'                             => 'e',
		'/[οΟΕε][ιίΙΊ]/u'                           => 'i',
		'/[αΑ][υύΥΎ]([θΘκΚξΞπΠσςΣτTφΡχΧψΨ]|\s|$)/u' => 'af$1',
		'/[αΑ][υύΥΎ]/u'                             => 'av',
		'/[εΕ][υύΥΎ]([θΘκΚξΞπΠσςΣτTφΡχΧψΨ]|\s|$)/u' => 'ef$1',
		'/[εΕ][υύΥΎ]/u'                             => 'ev',
		'/[οΟ][υύΥΎ]/u'                             => 'ou',
		'/(^|\s)[μΜ][πΠ]/u'                         => '$1b',
		'/[μΜ][πΠ](\s|$)/u'                         => 'b$1',
		'/[μΜ][πΠ]/u'                               => 'b',
		'/[νΝ][τΤ]/u'                               => 'nt',
		'/[τΤ][σΣ]/u'                               => 'ts',
		'/[τΤ][ζΖ]/u'                               => 'tz',
		'/[γΓ][γΓ]/u'                               => 'ng',
		'/[γΓ][κΚ]/u'                               => 'gk',
		'/[ηΗ][υΥ]([θΘκΚξΞπΠσςΣτTφΡχΧψΨ]|\s|$)/u'   => 'if$1',
		'/[ηΗ][υΥ]/u'                               => 'iu',

	);
	$title = preg_replace( array_keys($expressions), array_values($expressions), $title );

	$title = preg_replace("/[^A-Za-z0-9'_\-\.]/", '-', $title);
	$title = preg_replace('/\-+/', '-', $title);
	$title = preg_replace('/^-+/', '', $title);
	$title = preg_replace('/-+$/', '', $title);
	return $title;
}

 

 

0 found this helpful