Megpróbálom megváltoztatni a megjegyzés szerzőjének nevét (vagy pontosabban a WooCommerce véleményszerzőjét) keresztnévnek Utolsó kezdőbetű ( pl. “John D.” a “John Doe” kifejezésre).
Az utak nagy részét az alábbi kóddal jutottam el a function.php fájlban, de valamilyen oknál fogva (talán azért, mert a megjegyzés / felülvizsgálat beküldték) hajlamos kitörölni a nevet és helyettesíteni egy ponttal (“.”) néhány véleményben (nem mindegyikben).
add_filter("get_comment_author", "my_comment_author", 10, 1); function my_comment_author( $author = "" ) { // Get the comment ID from WP_Query $comment = get_comment( $comment_ID ); if ( empty($comment->comment_author) ) { if (!empty($comment->user_id)){ $user=get_userdata($comment->user_id); $author=$user->first_name." ".substr($user->last_name,0,1)."."; // this is the actual line you want to change } else { $author = __("Anonymous"); } } else { $user=get_userdata($comment->user_id); $author=$user->first_name." ".substr($user->last_name,0,1)."."; // this is the actual line you want to change } return $author; }
Ha az ilyen kódot tartalékként módosítom, akkor mindig a teljes nevet jeleníti meg:
add_filter("get_comment_author", "my_comment_author", 10, 1); function my_comment_author( $author = "" ) { // Get the comment ID from WP_Query $comment = get_comment( $comment_ID ); if ( empty($comment->comment_author) ) { if (!empty($comment->user_id)){ $user=get_userdata($comment->user_id); $author=$user->first_name." ".substr($user->last_name,0,1)."."; // this is the actual line you want to change } else { $author = __("Anonymous"); } } else { $author = $comment->comment_author; } return $author; }
A tényleges neveket inkább az adatbázisban hagyom sértetlen, és csak szűrje ki a kimenetet a webhely nyilvános oldalán, hogy megjegyzéseket fűzzen hozzájuk (lehet, hogy a teljes nevükre szükségünk lesz, hogy másutt megjelenítsük, de “nem tudjuk igazán tesztelni, amíg a megjegyzés szerzői helyesen nem jelenítenek meg).
Válasz
Hiányzik a “NEM” logikai operátor (!) az if utasításban. Azt akarja mondani, hogy “ha a megjegyzés írója NEM üres”. Mostantól a függvény azt olvassa, hogy a szerző nem üres, és nem az alapértelmezés szerint állítja be a másik utasítást, amely megmondja neki, hogy adja ki a szerző teljes nevét. Használja a második kódblokkot, de hajtsa végre a következő változtatást.
Módosítsa a következőket:
if ( empty($comment->comment_author) ) {
erre:
if ( !empty($comment->comment_author) ) {
Egyébként rendben van én.
Megjegyzések
Válasz
Ugyanaz a probléma volt …
Erre a kódrészletem van:
add_filter( "comment_author", "custom_comment_author", 10, 2 ); function custom_comment_author( $author, $commentID ) { $comment = get_comment( $commentID ); $user = get_user_by( "email", $comment->comment_author_email ); if( !$user ): return $author; else: $firstname = get_user_meta( $user->id, "first_name", true ); $lastname = get_user_meta( $user->id, "last_name", true ); if( empty( $firstname ) OR empty( $lastname ) ): return $author; else: return $firstname . " " . $lastname; endif; endif; }
Ellenőrzi, hogy van-e vezeték- és vezetéknév, és ezeket adja ki. Ha nincsenek a szokásos szerzők, akkor a rendszer visszatér.
Válasz
Hmm, néhány perc hibakeresés és a téma végigolvasása után , Arra a következtetésre jutottam, hogy könnyebben átmehet get_user_by () függvény
Tehát átmentem get_user_by("email",$comment->comment_author_email)
és sikerült megszereznie a felhasználó adatait akkor is, ha a megjegyzést / véleményt a felhasználó bejelentkezése nélkül küldték el.
Ez a teljes kódom
add_filter("get_comment_author", "comments_filter_uprise", 10, 1); function comments_filter_uprise( $author = "" ) { $comment = get_comment( $comment_author_email ); if ( !empty($comment->comment_author_email) ) { if (!empty($comment->comment_author_email)){ $user=get_user_by("email", $comment->comment_author_email); $author=$user->first_name." ".substr($user->last_name,0,1)."."; } else { $user = get_user_by( "email", $comment->comment_author_email ); $author = $user->first_name; } } else { $user=get_userdata($comment->user_id); $author=$user->first_name." ".substr($user->last_name,0,1)."."; $author = $comment->comment_author; } return $author; }
if(!empty($comment->user_id))
értéketif($comment->user_id > 0)
comment_author_email
regisztrálva van-e egy aktuális felhasználónál. Ha igen, akkor megragadja a többi felhasználói adatot.