V minulém díle jsme se dotkli souboru pro výpis komentářů a v dnešním si ukážeme, jak by měl skutečně vypadat. Protože nemá smysl vymýšlet již vymyšlené, vezmeme soubor comments.php z WordPress šablony TwentyTwelve, na které si vše vysvětlíme.
V našem souboru máme z minulého dílu comment list a comment_form(), to smažeme a na začátek souboru vložíme
<?php
if ( post_password_required() )
return;
?>
Pokud se zobrazí příspěvek, který je chráněn heslem a heslo není zadáno, nemá smysl načítat soubor s komentáři.
Nyní si vytvoříme div, který obalíme celou část s komentáři, přidáme podmínku pro zobrazení výpisu, jen když nějaké existují a nakonec zavoláme comment_form()
<div id="comments" class="comments-area">
<?php if ( have_comments() ) : ?>
<?php
endif;
comment_form();
?>
</div>
V případě, že chcete mít nad kódem formuláře kontrolu, můžete použít tento kód, místo funkce comment_form()
<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<?php if ( is_user_logged_in() ) : ?>
<p><?php printf(__('Logged in as %1$s. %2$sLog out »%3$s', 'theme'), '<a href="'.get_option('siteurl').'/wp-admin/profile.php">'.$user_identity.'</a>', '<a href="'.(function_exists('wp_logout_url') ? wp_logout_url(get_permalink()) : get_option('siteurl').'/wp-login.php?action=logout" title="').'" title="'.__('Log out of this account', 'theme').'">', '</a>') ?></p>
<?php else : ?>
<p>
<label for="author"><?php _e('Name', 'theme') ?> <span><?php if ($req) _e("*", 'theme'); ?></span></label>
<input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" />
</p>
<p>
<label for="email"><?php _e('Email', 'theme') ?><span> <?php if ($req) _e("*", 'theme'); ?></span></label>
<input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" />
</p>
<p>
<label for="url"><?php _e('Website', 'theme') ?></label>
<input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" />
</p>
<?php endif; ?>
<p>
<label for="comment"><?php _e('Comment', 'theme') ?></label>
<textarea name="comment" id="comment" cols="58" rows="10" tabindex="4"></textarea>
</p>
<p>
<button class="com_button" type="submit" name="submit">
<?php _e('POST COMMENT', 'theme'); ?>
</button>
<?php comment_id_fields(); ?>
</p>
<?php do_action('comment_form', $post->ID); ?>
</form>
Jistě jste si všimli, že na začátku je podmínka s výpisem jména uživatele, nebo odkazu pro přihlášení.
My se však budeme držet funkce comment_form. Do podmínky if have comments přidáme titulek výpisu komentářů
<h2 class="comments-title">
<?php
printf( _n( 'One thought on “%2$s”', '%1$s thoughts on “%2$s”', get_comments_number(), 'theme' ),
number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' );
?>
</h2>
a pod titulek vypíšeme seznam komentářů, který známe z minulého dílu
<ol class="commentlist">
<?php wp_list_comments(); ?>
</ol>
Úplně nakonec doplníme soubor o případné stránkování formulářů a výpis hlášky, pokud jsou komentáře uzavřeny
<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : ?>
<nav id="comment-nav-below" class="navigation" role="navigation">
<h1 class="assistive-text section-heading"><?php _e( 'Comment navigation', 'theme' ); ?></h1>
<div class="nav-previous"><?php previous_comments_link( __( '← Older Comments', 'theme' ) ); ?></div>
<div class="nav-next"><?php next_comments_link( __( 'Newer Comments →', 'theme' ) ); ?></div>
</nav>
<?php endif; ?>
<?php
if ( ! comments_open() && get_comments_number() ) : ?>
<p class="nocomments"><?php _e( 'Comments are closed.' , 'theme' ); ?></p>
<?php endif; ?>
Tím jsme ukončili soubor comments.php, který se nám bude starat o výpis komentářů a formuláře pro jejich přidávání. Celý kód vypadá takto:
<?php
if ( post_password_required() )
return;
?>
<div id="comments" class="comments-area">
<?php if ( have_comments() ) : ?>
<h2 class="comments-title">
<?php
printf( _n( 'One thought on “%2$s”', '%1$s thoughts on “%2$s”', get_comments_number(), 'theme' ),
number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' );
?>
</h2>
<ol class="commentlist">
<?php wp_list_comments(); ?>
</ol>
<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : ?>
<nav id="comment-nav-below" class="navigation" role="navigation">
<h1 class="assistive-text section-heading"><?php _e( 'Comment navigation', 'theme' ); ?></h1>
<div class="nav-previous"><?php previous_comments_link( __( '← Older Comments', 'theme' ) ); ?></div>
<div class="nav-next"><?php next_comments_link( __( 'Newer Comments →', 'theme' ) ); ?></div>
</nav>
<?php endif; ?>
<?php
if ( ! comments_open() && get_comments_number() ) : ?>
<p class="nocomments"><?php _e( 'Comments are closed.' , 'theme' ); ?></p>
<?php endif; ?>
<?php
endif;
comment_form();
?>
</div>
To je pro dnešek vše, v příštím díle si ukážeme, jak fungují post formáty a jak je zakomponovat do šablony.
Seriál: Jak vytvořit vlastní šablonu pro WordPress
- Jak vytvořit vlastní šablonu pro WordPress 1.díl
- Jak vytvořit vlastní šablonu pro WordPress 2.díl
- Jak vytvořit vlastní šablonu pro WordPress 3.díl
- Jak vytvořit vlastní šablonu pro WordPress 4.díl
- Jak vytvořit vlastní šablonu pro WordPress 5.díl
- Jak vytvořit vlastní šablonu pro WordPress 6.díl
- Jak vytvořit vlastní šablonu pro WordPress 7.díl
- Jak vytvořit vlastní šablonu pro WordPress 8.díl