2017-02-03 1 views
2

Standardmäßig wird Wordpress den Inhalt zu user_nicename Spalte in wp_users Tabelle geschrieben. Es entfernt Leerzeichen, einige Sonderzeichen und ändert Großbuchstaben in Kleinbuchstaben. Wird es möglich sein, user_nicename Spalte ohne Bereinigungen zu aktualisieren?Anpassen von user_nicename in wp_users Tabelle in WordPress

+0

Hallo :) Was sind die Spezifikationen und was willst du tun. –

+0

Ich möchte unsanize nice_name. – Stanly

Antwort

0

Es ist möglich, den pre_user_nicename Filter zu verwenden. Sie können es hier lesen https://developer.wordpress.org/reference/hooks/pre_user_nicename/ Der Filter wird direkt nach dem nicename angewendet wird saniert, aber wir können immer noch auf die unsanitisierten Daten zugreifen. Dies ist von wp-includes/user.php

/* 
* If a nicename is provided, remove unsafe user characters before using it. 
* Otherwise build a nicename from the user_login. 
*/ 
if (! empty($userdata['user_nicename'])) { 
    $user_nicename = sanitize_user($userdata['user_nicename'], true); 
    if (mb_strlen($user_nicename) > 50) { 
     return new WP_Error('user_nicename_too_long', __('Nicename may not be longer than 50 characters.')); 
    } 
} else { 
    $user_nicename = mb_substr($user_login, 0, 50); 
} 
$user_nicename = sanitize_title($user_nicename); 
// Store values to save in user meta. 
$meta = array(); 
/** 
* Filters a user's nicename before the user is created or updated. 
* 
* @since 2.0.3 
* 
* @param string $user_nicename The user's nicename. 
*/ 
$user_nicename = apply_filters('pre_user_nicename', $user_nicename); 
$raw_user_url = empty($userdata['user_url']) ? '' : $userdata['user_url']; 

Sie noch die unveränderte nicename durch den Benutzer mit dem $ userdata [ 'user_nicename'] Variable eingegeben zugreifen können. So wäre ein Beispiel Filter so gehen:

add_filter('pre_user_nicename', 'my_nicename_modification'); 
function my_nicename_modification($userdata) { 
    /*do anything you want with $userdata['user_nicename'] here 
    or leave blank if you want it saved just as the user typed it in */ 
    return $userdata['user_nicename']; 
} 

Diese $user_nicename = sanitize_title($user_nicename); von mehr ausgeführt werden, in dem Sie mehr hier https://codex.wordpress.org/Function_Reference/sanitize_title lesen. Das ändert den Nicename, wie Sie in Ihrer Frage erläutert haben. Hoffe, das hilft

+0

Funktion my_nicename_modification ($ userdata ['user_nicename']) { } wirft einen Fehler. ich bekomme hier nicht den unsanitisierten nicename. – Stanly

+0

Es funktioniert immer noch nicht richtig, halten Sie –

+0

Wir bekommen die sanitized Nicenameinside den Filter, nicht $ userdata Variable. – Stanly

Verwandte Themen