Problem przy rejestracji przez użytkowników

Dział dotyczący opisu sprawdzonych rozwiązań. Znajdziesz tutaj m. in. tutoriale Wordpress.
no avatar
Krzysztof Milewski
 
Posty: 2
Reputacja: 0 pkt
Od: 7 mar 2016, o 13:14

Problem przy rejestracji przez użytkowników

przez Krzysztof Milewski » 7 mar 2016, o 13:36

Niektóre systemy poczty elektronicznej pokazują źle email od rejestracji (np. poczta.o2.pl). Przychodzi taki komunikat:
Kod: Zaznacz cały
Nazwa użytkownika: krysek
Aby ustawić hasło, przejdź na stronę:
<http://wpportale.pl/wp-login.php?action=rp&key=xxx&login=xxx>;
http://wpportale.pl/wp-login.php

Link do kliknięcia wygląda następująco:
Kod: Zaznacz cały
http://new-song-online.com/wp-login.php?action=rp&key=xxx&login=xxx>

Czyli na końcu jest >
Po kliknięciu na link jest komunikat:
Proszę wprowadzić swoją nazwę użytkownika lub adres email. Odnośnik pozwalający na utworzenie nowego hasła zostanie wysłany emailem.
Odnośnik do resetowania hasła wydaje się być niesprawny. Proszę zawnioskować o nowy odnośnik poniżej.

Ktoś informował na polskim forum wordpress.org o tym ale żadnej odpowiedzi nie było.
Ja dziś napisałem na angielskim forum wordpress.org/support ale się nie ukazało , może temu, że jestem z Polski.
Mógłby ktoś kto mieszka za granicą dać to na forum angielskie albo gdzieś to zgłosić
Kod: Zaznacz cały
Some email systems wrong show registration e-mail. Comes a message:
Username: sdeje
To set your password, visit the following address:
<http://new-song-online.com/wp-login.php?action=rp&key=xxx&login=xxx>;
http://new-song-online.com/wp-login.php
Link to click looks as follows:
http://new-song-online.com/wp-login.php?action=rp&key=xxx&login=xxx>
So at the end is >
After clicking on the link is the message:
<blockquote>Please enter your username or email address. You will receive a link to create a new password via email.
Your password reset link appears to be invalid. Please request a new link below.</blockquote>
You would have to remove Wordpress < and >


Aktualizacja: teraz widzę że jednak ukazał się mój post na angielskim forum tylko że w miejsce numeru i loginu z linku dali krzyżyki.
Ale i tak jak ktoś ma dojście do twórców wordpressa niech to zgłosi.

no avatar
mydełkoFa
 
Posty: 1
Reputacja: 1 pkt
Od: 6 lut 2018, o 12:48

Re: Problem przy rejestracji przez użytkowników

przez mydełkoFa » 6 lut 2018, o 13:52

Do tej pory i mnie by to nie dotyczyło, gdyby nie fakt, że dla sprawdzenia systemu chciałem się zarejestrować na swojej witrynie.

Krzysztof Milewski napisał(a):Niektóre systemy poczty elektronicznej pokazują źle email od rejestracji (np. poczta.o2.pl).


To nie wina systemu pocztowego, lecz źle utworzonego odnośnika.

Jeżeli wiadomość jest wysyłana jako
Kod: Zaznacz cały
text/plain
a tak właśnie jest w przypadku resetowania hasła jak i wiadomości po rejestracji, adres url nie powinien zawierać żadnych dodatków w postaci ostrych nawiasów:
Kod: Zaznacz cały
< >

Niby po co je ktoś tam umieścił?

Z początku sam myślałem, że ktoś chciał zrobić z tego znacznik html i źle go zamknął. Ale jak zobaczyłem nagłówek wiadomości, od razu skojarzyłem.
Słusznie zauważyłeś, że nie powinien być on opakowany z ostre nawiasy.
Powinien być to czysty link, z protokołem, a twoja poczta już go sobie sama podświetli.

Jak widać po dacie twojego wpisu, minął rok a ten błąd nadal siedzie w kodzie źródłowym.

Żeby go znaleźć, najpierw musiałem znaleźć tłumaczenia WP i poszukać, gdzie jest jego odpowiednik w kodzie.
Szybko dotarłem do tego miejsca:

[url]https://core.trac.wordpress.org/browser/branches/4.8/src/wp-login.php?marks=332#L331
[/url]

Linia 332.

Szybkim. połowicznym rozwiązaniem, może być poprawienie kodu, w pliku
Kod: Zaznacz cały
wp-login.php
.
Ale, jak wiadomo, kodu źródłowego się nie edytuje, bo po aktualizacji utracimy te zmiany.

Co zatem można zrobić?

Na szczęście do zmiennej
Kod: Zaznacz cały
$message
jest zaaplikowany filtr, dzięki któremu można tę wiadomość przefiltrować czyli zrobić własną.

Kod: Zaznacz cały
   $message = apply_filters( 'retrieve_password_message', $message, $key, $user_login, $user_data );


Funkcja wyjściowa może wyglądać tak:

Kod: Zaznacz cały
// define the retrieve_password_message callback
function filter_retrieve_password_message( $message, $key, $user_login, $user_data ) {
    // make filter magic happen here...
    return $message;
};
         
// add the filter
add_filter( 'retrieve_password_message', 'filter_retrieve_password_message', 10, 4 );


Żeby to działało, wystarczy że z funkcji
Kod: Zaznacz cały
retrieve_password()
, skopiujesz zmienną
Kod: Zaznacz cały
$message
, czyli to co tworzy szkielet/body wiadomości,
ALE..
z poprawionym linkiem.

Kod: Zaznacz cały
// define the retrieve_password_message callback
function filter_retrieve_password_message( $message, $key, $user_login, $user_data ) {
   
   $message = __( 'Someone has requested a password reset for the following account:' ) . "\r\n\r\n";
   /* translators: %s: site name */
   $message .= sprintf( __( 'Site Name: %s'), $site_name ) . "\r\n\r\n";
   /* translators: %s: user login */
   $message .= sprintf( __( 'Username: %s'), $user_login ) . "\r\n\r\n";
   $message .= __( 'If this was a mistake, just ignore this email and nothing will happen.' ) . "\r\n\r\n";
   $message .= __( 'To reset your password, visit the following address:' ) . "\r\n\r\n";
   $message .= network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' );
   $message .= "\r\n";
    return $message;
};
         
// add the filter
add_filter( 'retrieve_password_message', 'filter_retrieve_password_message', 10, 4 );


I to wszystko.

Ale.. niestety w przypadku powiadomień wysyłanych do nowo zarejestrowanych użytkowników, już nie jest tak kolorowo, bo, nie rozumieć dlaczego - żadnego filtra do tego nie ma. :(

A, żeby ktoś z ekipy WordPressa dostrzegł bład, należy utworzyć ticket (bilet).

P.s. Poprawka.
Dla powiadomień dla nowo zarejestrowanych użytkowników, jest zaczep filtra:
Kod: Zaznacz cały
wp_new_user_notification_email
:

Nie zauwarzłyłem go, bo przeglądałem wersję 4.8, a zaczep jest od v. 4.9.
https://developer.wordpress.org/reference/hooks/wp_new_user_notification_email/

Rozwiązaniem też może być też skopiowania całej funkcji
Kod: Zaznacz cały
wp_new_user_notification()
, z pliku
Kod: Zaznacz cały
pluggable.php
i utworzenie wtyczki w katalogu mu-plugins. Wtedy będzie można zmodyfikować jej kod, bez obawy utraty modyfikacji podczas aktualizacji.
admin lubi ten wpis.

no avatar
Kerov
 
Posty: 2
Reputacja: 1 pkt
Od: 27 mar 2018, o 14:14

Re: Problem przy rejestracji przez użytkowników

przez Kerov » 27 mar 2018, o 14:16

Ktoś może wprowadził te zmiany, bo fajnie że ktoś wreszcie się tym zainteresował.
Ale nawet mając taką instrukcję nie wiem jak to wykonać, ktoś może mnie naprowadzić?

no avatar
Kerov
 
Posty: 2
Reputacja: 1 pkt
Od: 27 mar 2018, o 14:14

Re: Problem przy rejestracji przez użytkowników

przez Kerov » 29 mar 2018, o 10:37

Problem rozwiązuje częściowo dowolny plugin który dodaje wygląd do systemowych maili.
Phoryn lubi ten wpis.




  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Baza wiedzy Wordpress

Kto przegląda forum Wordpress

Użytkownicy przeglądający ten dział: Bing [Bot] i 1 gość