Megjegyzésszerző megváltoztatása Megjelenített név

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

  • Rendben, remekül működik, azzal a különbséggel, hogy néhány név még mindig " Névtelen ", annak ellenére, hogy az összes ellenőrzést regisztrált felhasználók végezték. Felhívtam a fenti kódot, hogy a teljes név egyelőre tartalékként jelenjen meg … van valami javaslat?
  • I még nem tesztelte ezt, de a kódexet nézve úgy tűnik, hogy a get_comment () – > user_id alapértelmezett értéke 0 ha nem felhasználó küldte be. Esetleg próbálja meg megváltoztatni a if(!empty($comment->user_id)) értéket if($comment->user_id > 0)
  • Ezenkívül meg kell győződnie a felhasználók be vannak jelentkezve, miközben s a kommentek visszafogása. Ha nem, akkor megértésem szerint a 0 felhasználói_azonosító naplózásra kerül (még akkor is, ha ugyanazokat a hitelesítő adatokat használják). Ha nem szeretné, hogy ' megkövetelje, hogy először jelentkezzen be, akkor egyszerű funkciót kell írnia ellenőrizze, hogy a 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.
  • (^^^ ez nyilvánvalóan nem ajánlott, mivel az emberek más felhasználók leple alatt is benyújthatják észrevételeiket).

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; } 

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük