WordPress: úprava jména autora komentáře

wordpress

Nelíbí se ti formát jména autorů komentářů? Mám tady jednoduchý snippet pro jeho úpravu.

Popis kódu pro úpravy jména autora komentáře

V této ukázce upravíme formát zobrazovaného jména na křestní jméno a první písmeno z příjmení s tečkou, jako příklad použití může sloužit Joe D. Přes filter comment_author dostaneme proměnnou $author, v ní je textový řetězec zobrazovaného jména. Obvykle to bývá přihlašovací jméno, nicename, nebo uživatelem nastavený formát.

Tento snippet upraví jména jak v komentářích příspěvků, tak i u komentářů všech dalších typů příspěvků, takže třeba i u hodnocení produktů ve WooCommerce. Pokud chceš úpravu použít jen pro některé typy příspěvků, tak přidej na začátek funkce podmínku, která zjistí pomocí funkce get_post_type(), jaký post type má zobrazovaná stránka a porovná jej s nastavenými typy v poli pomocí PHP funkce in_array(). Pokud se slug typu příspěvku nachází v poli, tak vrátí výchozí jméno z proměnné $author.

Kromě tohoto jména tedy nemáme o uživateli žádné informace, budeme je muset získat pomocí třídy WP_User_Query, kde hodnotu proměnné $author použijeme jako argument pro vyhledávání ve třech sloupcích databáze: user_login, user_nicename, display_name.

Do proměnné $user_query se nám uložil objekt vygenerovaný třídou WP_User_Query. V získaném objektu jsou uživatele, které třída našla, tedy vždy tam bude jen jeden uživatel, ale je potřeba projet objekt loopem foreach. Uvnitř loopu je pak podmínka, která kontroluje, jestli má uživatel vyplněné pole first_name a last_name, pokud má, vrátí filtru místo proměnné $author jméno v novém formátu, pokud jedno z nich chybí, tak vrátí původní hodnotu proměnné $author.

Kód pro úpravy jména autora komentáře

Kód jako vždy vlož do functions.php*.

  add_filter( 'comment_author', 'uprava_jmena_autora_komentare', 10, 2 );
  function uprava_jmena_autora_komentare($author, $comment_ID){

    // Pokud nechceš úpravu aplikovat na některé typy příspěvků,
    // tak nahraď hodnoty v poli (v ukázce: 'post', 'page')
    if (in_array( get_post_type(), ['post', 'page'])) return $author;

    // Nejdříve je potřeba získat data o autorovi komentáře
    $args = [
      'search' => $author, // login nebo nicename
      'search_fields' => array('user_login','user_nicename','display_name')
    ];
    $user_query = new WP_User_Query($args);

    // Získaná data mají formát objektu, takže je třeba prohnat je loopem
    if ( ! empty( $user_query->get_results() ) ) {
      foreach ( $user_query->get_results() as $user ) {

        // Pro mé účely nejdříve ověřím, jestli má uživatel vyplněné křestní jméno i příjmení
        if( $user->first_name && $user->last_name){

          // Pokud obě vyplněné má vrátí v tomto případě křestní jméno a první písmeno z příjmení a tečku.
          return $user->first_name . ' ' . substr($user->last_name, 0,1) . '.';
        }        
      }
    }
    // Když uživatel nemá vyplněné jedno z polí jména, tak je vráceno jméno v původním formátu
    return $author;
  }

Zdroje

Reklama
Reklama zdarma, zvýšení návštěvnostiZobrazeno 49 krát.
%d bloggers like this: