Давайте вместе расковыряем файл comments-popup.php – отображение всплывающих комментариев нашего блога.
В более поздних версиях тем для WordPress этот файл используется редко, но почему бы просто не полюбопытствовать?
<?php /* Это мы не трогаем. */
add_filter('comment_text', 'popuplinks');
foreach ($posts as $post) { start_wp();
?>
<!—Отрисовываем заголовок страницы—>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo get_settings('blogname'); ?> - <?php echo sprintf(__("Комментарии к %s"), the_title('','',false)); ?></title>
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_settings('blog_charset'); ?>" />
<style media="screen">
@import url( <?php bloginfo('stylesheet_url'); ?> );
body { margin: 3px; }
</style>
</head>
<body>
<!—Подпись заголовков—>
<h1><a href="" title="<?php echo get_settings('blogname'); ?>"><?php echo get_settings('blogname'); ?></a></h1>
<h2><?php _e("Комментарии"); ?></h2>
<p><a href="<?php echo get_settings('siteurl'); ?>/wp-commentsrss2.php?p=<?php echo $post->ID; ?>"><?php _e("<abbr title=\"Really Simple Syndication\">RSS</abbr> для получения комментариев на эту запись."); ?></a></p>
<?php if ('open' == $post->ping_status) { ?>
<p><?php _e("The <acronym title=\"Uniform Resource Identifier\">URI</acronym> для TrackBack-а этой записи следующий:"); ?> <em><?php trackback_url() ?></em></p>
<?php } ?>
<?php
// это – часть кода WordPress-овского движка, оставим пока, как есть. Хотя те, кто знаком с куками могут и покопаться
$comment_author = (isset($_COOKIE['comment_author_' . COOKIEHASH])) ? trim($_COOKIE['comment_author_'. COOKIEHASH]) : '';
$comment_author_email = (isset($_COOKIE['comment_author_email_'. COOKIEHASH])) ? trim($_COOKIE['comment_author_email_'. COOKIEHASH]) : '';
$comment_author_url = (isset($_COOKIE['comment_author_url_'. COOKIEHASH])) ? trim($_COOKIE['comment_author_url_'. COOKIEHASH]) : '';
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $id AND comment_approved = '1' ORDER BY comment_date");
$commentstatus = $wpdb->get_row("SELECT comment_status, post_password FROM $wpdb->posts WHERE ID = $id");
if (!empty($commentstatus->post_password) && $_COOKIE['wp-postpass_'. COOKIEHASH] != $commentstatus->post_password) { // и от cookie это не зависит
echo(get_the_password_form());
} else { ?>
<?php if ($comments) { ?>
<ol>
<?php foreach ($comments as $comment) { ?>
<li>
<?php comment_text() ?>
<p><cite><?php comment_type(__('Комментарии'), __('Trackback'), __('Pingback')); ?> <?php _e("от"); ?> <?php comment_author_link() ?> — <?php comment_date() ?> @ <a href="#comment-<?php comment_ID() ?>"><?php comment_time() ?></a></cite></p>
</li>
<?php } // завершение каждого комментария ?>
</ol>
<?php } else { // если комментариев пока нет ?>
<p><?php _e("Комментариев пока нет."); ?></p>
<?php } ?>
<?php if ('open' == $commentstatus->comment_status) { ?>
<h2><?php _e("Оставить комментарий"); ?></h2>
<p><?php _e("Строки и параграфы разбиваются автоматически, e-mail адрес не отображается, <acronym title=\"Hypertext Markup Language\">HTML</acronym>-тэги разрешены:"); ?> <code><?php echo allowed_tags(); ?></code></p>
<form action="<?php echo get_settings('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<p>
<input type="text" name="author" id="author" class="textarea" value="<?php echo $comment_author; ?>" size="28" tabindex="1" />
<label for="author"><?php _e("Имя"); ?></label>
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
<input type="hidden" name="redirect_to" value="<?php echo wp_specialchars($_SERVER["REQUEST_URI"]); ?>" />
</p>
<p>
<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="28" tabindex="2" />
<label for="email"><?php _e("E-mail"); ?></label>
</p>
<p>
<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="28" tabindex="3" />
<label for="url"><?php _e("<acronym title=\"Uniform Resource Identifier\">URI</acronym>"); ?></label>
</p>
<p>
<label for="comment"><?php _e("Ваш комментарий"); ?></label>
<br />
<textarea name="comment" id="comment" cols="70" rows="4" tabindex="4"></textarea>
</p>
<p>
<input name="submit" type="submit" tabindex="5" value="<?php _e("Say It!"); ?>" />
</p>
<?php do_action('comment_form', $post->ID); ?>
</form>
<?php } else { // комментарии закрыты ?>
<p><?php _e("Извините, форма комментария сейчас закрыта."); ?></p>
<?php }
} // завершение проверки пароля
?>
<div><strong><a href="javascript:window.close()"><?php _e("Закрыть это окно."); ?></a></strong></div>
<?php
}
?>
<!-- // это – еще один кусок кода WP - оставим и его в покое :) -->
<?php //} ?>
<p class="credit"><?php timer_stop(1); ?> <?php echo sprintf(__("<cite>Движок блога <a href=\"http://wordpress.org\" title=\"%s\"><strong>Wordpress</strong></a></cite>"),__("Работает на WordPress.")); ?></p>
<script>
<!--
document.onkeypress = function esc(e) {
if(typeof(e) == "undefined") { e=event; }
if (e.keyCode == 27) { self.close(); }
}
// -->
</script>
</body>
</html>
Как видим, местами очень похоже на comments.php, но цели у этих двух файлов – разные. Если comments.php – это часть кода страницы с полной записью, то этот файл – автономный просмотр комментариев как результат поиска.
На сегодня – всё. Спасибо за внимание.
Читайте в этой серии:
Скин для WP своими руками (Вводная часть)
Скин для WP своими руками (header.php)
Скин для WP своими руками (footer.php)
Скин для WP своими руками (sidebar.php)
Скин для WP своими руками (comments-popup.php)
Скин для WP своими руками (search.php)
Скин для WP своими руками (оставшиеся мелочи.php)
Скин для WP своими руками. (Вводная в дизайн)
Скин для WP своими руками. (css — финальный аккорд)
Тема для WordPress — иерархия
Тема для WordPress — CSS
Тема для WordPress — функции
Тема для WordPress – цикл