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 ? '*' : '' ) .
'
',
);
$args = array(
'fields' => $fields
);
comment_form($args);
',
'email' => '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 ? '*' : '' ) .
'
',
'age' => '' . ( $req ? '*' : '' ) .
'
'
);
$args = array(
'fields' => apply_filters( 'comment_form_default_fields', $fields )
);
comment_form($args);
',
'email' => '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:
' .
sprintf( __( 'You must be logged in to post a comment.' ),
wp_login_url( apply_filters( 'the_permalink', get_permalink( ) ) ) ) . '
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:
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ů.