Скин для 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 – оставим и его в покое smile –>
<?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 комментария

  1. avatar

    Виктор

    Полезные скрипты, надо взять на вооружение. Спасибо!

    • avatar

      levati

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

  2. avatar

    alex

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


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

    • avatar

      levati

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

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