Musilda.cz

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ář 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:

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ů.

Exit mobile version