Скин для WP своими руками (comments-popup.php)

Давайте вместе расковыряем файл 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 type=»text/css» 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() ?> &#8212; <?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 type=»text/javascript»>
<!—
document.onkeypress = function esc(e) {
if(typeof(e) == «undefined») { e=event; }
if (e.keyCode == 27) { self.close(); }
}
// —>
</script>
</body>
</html>

Как видим, местами очень похоже на comments.php, но цели у этих двух файлов – разные. Если comments.php – это часть кода страницы с полной записью, то этот файл – автономный просмотр комментариев как результат поиска.

На сегодня – всё. Спасибо за внимание.

Читайте в этой серии:

4 комментария

    • avatar

      levati

      Пожалуйста, пользуйтесь. ;)
      Создавая свою первую тему для сайта я взял за основу ту, что понравилась, и «расковырял» её насколько смог, но, со временем, пришел к выводу, что вёрстка тем для WordPress-а не многим сложнее, чем обычная HTML+CSS вёрстка.

  1. avatar

    alex

    Вот этот кусок то покоя и не дает.


    <?php echo sprintf(__("Движок блога WordPress"),__("Работает на WordPress.")); ?>

    • avatar

      levati

      sprintf возвращает строку, сформатированную по указанному шаблону.

      На выходе мы просто получим ссылку с определенным заголовком (Title)