Jak upravit základní vzhled komentářů ve WordPress

Jedním ze základním post formátů ve WordPressu jsou komentáře. Pro každého blogera jsou nezastupitelným nástrojem pro komunikaci s komunitou čtenářů. Protože je však základní formulář velmi jednoduchý a zároveň nemusí jeho nastavení vyhovovat každému, ukážeme si, jak jej jednoduše upravit k obrazu svému. Samotný formulář…

Jedním ze základním post formátů ve WordPressu jsou komentáře. Pro každého blogera jsou nezastupitelným nástrojem pro komunikaci s komunitou čtenářů. Protože je však základní formulář velmi jednoduchý a zároveň nemusí jeho nastavení vyhovovat každému, ukážeme si, jak jej jednoduše upravit k obrazu svému.

Samotný formulář pro komentáře zobrazíme v šabloně použitím funkce

comment_form($args,$post_id);

Většinou v šablonách vidíme jednoduchý zápis comment_form(), ale právě využití parametrů funkce umožňuje snadnou úpravu základního formuláře. Volání funkce bez parametrů zobrazí formulář takto:

Parametry, které funkce obsahuje jsou tyto:

  • fields
  • comment_field
  • must_log_in
  • logged_in_as
  • comment_notes_before
  • comment_notes_after
  • id_form
  • id_submit
  • title_reply
  • title_reply_to
  • cancel_reply_link
  • label_submit

Většinu z nich asi nebudete mít potřebu měnit, ale někdy se to může hodit.

Úprava formuláře pomocí parametrů funkce

Fields

Zobrazuje jednotlivá pole formuláře, v základním nastavení to je Name, Email, Website, přičemž první dvě pole jsou povinná. Pomocí tohoto pole můžete přidávat, či odebírat jednotlivá pole. Pokud například chcete odebrat z formuláře položku Website, použijete následující kód:

$fields =  array(
    'author' => '

' . ' ' . ( $req ? '*' : '' ) . '

', 'email' => '', ); $args = array( 'fields' => $fields ); comment_form($args);

Proměnnou $req použijete, pokud budete chtít přidat nové pole, které bude povinné. Následující kód přidá do formuláře povinné pole s věkem:

$fields =  array(
    'author' => '

' . ' ' . ( $req ? '*' : '' ) . '

', 'email' => '', 'age' => '

' . ( $req ? '*' : '' ) . '

' ); $args = array( 'fields' => apply_filters( 'comment_form_default_fields', $fields ) ); comment_form($args);

Comment_field

Zobrazení textarea tagu ve formuláři. Jeho defaultní hodnota je:

Toto pole asi nebudete mít potřebu měnit, ale pro případnou změnu můžete použít následují kód:

$args = array(
    'comment_field' =>  'html kód pro vaši textareu'
);

comment_form($args);

Must_log_in

Zobrazení informace o nutností přihlášení, pro přidání komentáře. Základní hodnota je:


Logged_in_as

Zobrazuje jméno přihlášeného uživatele a nahrazuje pole Name a Email. Základní hodnota je:

' . sprintf( __( 'Logged in as %2$s. Log out?' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( ) ) ) ) . '

Comment_notes_before

Zobrazuje text před komentářovým formulářem. Základní hodnota je:

' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '

Pokud chcete text odstranit, stačí použít následující kód:

$args = array(
    'comment_notes_before' =>  ''
);

comment_form($args);

Comment_notes_after

Zobrazuje text za textareou a před submit tlačítkem. Základní hodnota je:

' . sprintf( __( 'You may use these HTML tags and attributes: %s' ), ' ' . allowed_tags() . '' ) . '

Pokud chcete tento text odstranit, použijte podobný postup jako v předchozím příkladu:

$args = array(
    'comment_notes_after' =>  ''
);

comment_form($args);

Další parametry funkce

Protože následující parametry většinou obsahují texty jednotlivých prvků, shrnu je do jednoho odstavce.

Id_form – hodnota id pro tag form, základní hodnota je „commentform“.
Id_submit – hodnota id pro submit tlačitko, základní hodnota je „submit“.
Title_reply – titulek nad formulářem, základní hodnota je „Leave Reply“.
Title_reply_to – titulek nad formulářem při odpovědi, základní hodnota je „Leave Reply to %“.
Cancel_reply_link – text odkazu pro vymazání odpovědi, základní hodnota je „Cancel reply“.
Label_submit – text tlačítka pro odeslání komentáře, základní hodnota je „Post Comment“.

Použití:

$args = array(
    'id_form' =>  'id formuláře',
    'id_submit' => 'id tlačitka',
    'title_reply' => 'Přidej komentář',
    'title_reply_top' => 'Přidej komentář k',
    'cancel_reply_link' => 'Vymaž odpověď',
    'label_submit' => 'Odeslat komentář'
);

comment_form($args);

Přidání a odebrání polí pomocí filtru

V předchozích příkladech jsme upravovali formulář pomocí funkce comment_form a jejích parametrů. Nyní si ukážeme, jak využít filtr comment_form_default_fields. Jak pomocí tohoto filtru odebrat pole z formuláře jsem ukazoval v tomto článku. Proto zde uvedu pouze postup jak přidat do formuláře další pole.

Do souboru functions.php vložte následující kód:

function add_comment_fields($fields) {

$fields['age'] = '

' . '

'; return $fields; } add_filter('comment_form_default_fields','add_comment_fields');

Tím do formuláře přidáte nepovinné pole Věk. Stejný výsledek jsme dostali pomocí použití fields ve funkci comment_form(). Máme tedy ve formuláři nové pole, ale ještě jej musíme uložit do databáze. Použijeme comment meta a hooku „comment_post“. Do functions.php vložíme následující kód:

function add_comment_meta_values($comment_id) {

    if(isset($_POST['age'])) {
        $age = wp_filter_nohtml_kses($_POST['age']);
        add_comment_meta($comment_id, 'age', $age, false);
    }

}
add_action ('comment_post', 'add_comment_meta_values', 1);

Tím jsme uložili věk do databáze jako comment meta a pokud jej budeme chtít zobrazit v šabloně, použijeme:

get_comment_meta( $comment->comment_ID, 'age', true );

A jsme u konce. Díky tomuto článku si můžete upravit formulář dle vašich požadavků. Pro dokonalou kontrolu nad zobrazováním komentářů a formuláře je nutné použít soubor comments.php, který, pokud je ve složce aktuální šablony, je automaticky načten a zobrazování se řídí pomocí něj. Ale to bude součást některého z dalších článků.

12 komentářů: „Jak upravit základní vzhled komentářů ve WordPress“

  1. Webdesign avatar

    Super zrhnuté, niektoré funkcie hneď vyskúšam a pohrám sa s tým. Ďakujem za tip.

  2. Míra avatar
    Míra

    Moc se v tom nevyznám, potřebuji odstranit ten text před tlačítkem odeslat, kam to mám nahrát ? Díky předem za radu.

    $args = array(
    ‚comment_notes_after‘ => “
    );

    comment_form($args);

  3. Musilda avatar
    Musilda

    Pokud máte formulář volaný pomocí comment_form(), tak do toho místa v šabloně, kde je ta funkce. Pokud máte comment.php soubor, tak to musíte upravit tam.

  4. dan avatar
    dan

    Ahoj kde presne v comment.php to dat? At to zkousim jak to zkousim, tak to nefunguje. Na konci mam comment_form (). Diky moc

  5. Musilda avatar
    Musilda

    To by bylo potřeba ten soubor vidět, dost často jsou v něm podmínky a záleží na tom, kam se ty argumenty přidají. Také té funkci se musí předat comment_form($arg, $post_id)

  6. dan avatar
    dan

    Je to php od šablony Photologger

  7. Jan Pavelka avatar

    Díky! Moc mi to pomohlo

  8. jan avatar

    Díky moc

  9. […] Jak upravit základní vzhled komentářů ve WordPress […]

  10. […] Jak upravit základní vzhled komentářů ve WordPress […]

  11. […] Jak upravit základní vzhled komentářů ve WordPress […]