Jak vytvořit vlastní šablonu pro WordPress – 7 díl

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 &raquo;%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>
Čtěte  Jak vytvořit vlastní šablonu pro Wordpress - 1 díl
<?php if ( is_user_logged_in() ) : ?> <p><?php printf(__('Logged in as %1$s. %2$sLog out &raquo;%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ářů

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( __( '&larr; Older Comments', 'theme' ) ); ?></div>
<div class="nav-next"><?php next_comments_link( __( 'Newer Comments &rarr;', '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 &ldquo;%2$s&rdquo;', '%1$s thoughts on &ldquo;%2$s&rdquo;', 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( __( '&larr; Older Comments', 'theme' ) ); ?></div>
<div class="nav-next"><?php next_comments_link( __( 'Newer Comments &rarr;', '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>
Čtěte  Jak vytvořit vlastní šablonu pro WordPress – 2 díl
<?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( __( '&larr; Older Comments', 'theme' ) ); ?></div> <div class="nav-next"><?php next_comments_link( __( 'Newer Comments &rarr;', '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

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Related posts

Leave a Reply

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *