Jak upravit základní vzhled komentářů ve Wordpress - Affinite.io CZ

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

Linguini restaurační Wordpress premium šablona
Linguini restaurační Wordpress premium šablona
16 Kvě, 2013
Jak zrychlit Wordpress infografika
Jak zrychlit Wordpress infografika
18 Kvě, 2013

Komentáře nejsou povoleny.

Looking for something?