weboldal készítés, Nagy-Webdesign

Freebies

Hogyan módosítsuk a comment-template.php fájlt

Aki Wordpress blogot üzemeltet könnyen találkozhat olyan egyedi igénnyel, ami a forráskód módosításával oldható meg. Erre jó példa a saját esetem, mikor nem engedélyezett a felhasználóknak a profiljuk szerkesztése, vagyis a nyilvánosan megjelenő név módosítása. A forráskód módosítás elsőre merész gondolat, mivel a teljes forráskód függvények tömkelege, mégis átlátható, ha sikerül megérteni a mögötte rejlő gondolatmenetet. Szerencsére a készítők a php fájlokban bőséggel helyeztek el kommenteket a függvények mellé és az elnevezésük is beszédes. Természetesen a megértéshez kell tudni angolul, vagy szükséges egy szótár a lefordításhoz.

Az általam készített blogban a hozzászólásoknál megjelenő név elég vegyes volt. Ez a WooCommerce bővítménynek köszönhető, mivel a felhasználó regisztrálás kétféle módon lehetséges. Mivel egységes megoldást szerettem volna, így hosszas gondolkozás után úgy döntöttem, hogy mindenkinek a bejelentkezési névből generálódó beceneve fog megjelenni. Alap esetben a Wordpress a hozzászólásokhoz a felhasználó által beállított nyilvánosan megjelenő nevet menti el az adatbázisba. Szerencsére az adatbázisba nem csak ezt a nevet, hanem a felhasználó azonosítóját is elmenti, így ez alapján van lehetőségünk egyedi megoldásra.

Lássuk az eredeti kód részletet:

function get_comment_author( $comment_ID = 0 ) {
    $comment = get_comment( $comment_ID );

    if ( empty( $comment->comment_author ) ) {
        if ( $comment->user_id && $user = get_userdata( $comment->user_id ) )
            $author = $user->display_name;
        else
            $author = __('Anonymous');
    } else {
        $author = $comment->comment_author;
    }

Kicsit értelmezem a kódrészt, hogy érhető legyen mit is kell ebben módosítani. A hozzászólások megjelenítésénél kiolvasásra kerül az adatbázisból a comment tábla. Ez tartalmazza a comment_author oszlopban azt a nevet amit meg fog jeleníteni. Amennyiben üres, akkor a users táblából kiolvassa a display_name oszlopból a felhasználóhoz tartozó nevet. (Itt a regisztrációtól függően vagy az e-mail címből generált név szerepel, vagy a felhasználó által megadott név. Mint említettem ezt a WooCommerce bővítmény okozza.) Amennyiben ez sem lehetséges, akkor lesz a hozzászólás anonim. Végig gondolva két helyen kell módosítást végrehajtani. Az első, mikor a comment_author üres és a display_name jelenne meg, még a másik mikor ki van töltve a comment_author.

A módosítás után így fog kinézni:

function get_comment_author( $comment_ID = 0 ) {
    $comment = get_comment( $comment_ID );

    if ( empty( $comment->comment_author ) ) {
        if ( $comment->user_id && $user = get_userdata( $comment->user_id ) )
            $author = $user->user_nicename;
        else
            $author = __('Anonymous');
    } else {
        $user=get_userdata($comment->user_id);
        $author=$user->user_nicename;
    }

 Az első módosítás nagyon egyszerű, hiszen csak át kell írni a kódban a display_name részt user_nicename-re. A második módosítás igényel némi magyarázatot. Mivel a feltételek miatt átugrásra kerül a $user váltózó megadása, így gondoskodni kell ennek a megadásáról. Emiatt került be egy plusz sor a kódba.

A végeredmény ezek után, hogy minden hozzászólásnál a hozzászóló beceneve szerepel. Szerintem ez sokkal szebb, mint mikor vegyesen (regisztráció módjától függően) jelenik meg.

Az oldal használatával hozzájárul a cookie-k használatához és az adatkezelési szabályzathoz.