YAOHAIXIAO.COM

HTML(5),CSS(3),JavaScript,DOM,Ajax,JSON,Front-end technologies & Yaohaixiao

热门标签:JavaScript Performance 前端开发 前端性能优化 原创

Rss

Home » WordPress » 如何给 WordPress 添加留言板

如何给 WordPress 添加留言板

这两天又在给 BlueNight 主题增加新的功能,留言板就是我希望添加的一个功能。由于自己的主机控件不支持 PHP 的 email 模块,所以主题自己的博客一直都没有 contact us 页面,虽然我的主题有这个模版。随叫自己图便宜,找了个水货服务商。那只有想个办法做一个专门供网友和我在线沟通的工具。

看看强大的 WordPress,我想大家肯定跟我一样,第一时间就想到了用 WordPress 的 Page 模版,然后添加上 WordPress 的评论功能。事实上这样是确实可行的,而且也十分的简单。下面我就具体介绍一下怎么制作留言板模版。

给 Page 模版添加上发表评论功能

玩过 WordPress 的朋友都知道,WordPress 默认的 page.php 模版是没有评论功能的。不过好在 WordPress 很灵活,模块分的很细,组合起来也很方便。只要你看看任何一个 single.php 文件,你会发现添加评论功能只需要调用 comments_template() 函数就能轻松搞定了。这里以 BlueNight 主题的实现方式为例:

<?php
/**
 * The gustbook template file.
 *
 * Template Name: GuestBook
 *
 * @package BlueNight
 * @since BlueNight 1.2.17
 * 
 */
?>
<?php get_header(); ?>
<div class="wrap container">
    <?php if (function_exists('breadcrumbs')) { breadcrumbs(); } ?>
    <div class="main guestbook-main" id="main">
    	<h1><?php the_title(); ?></h1>
        <!-- post -->
	    <div class="post">
	         <?php if (have_posts()) : the_post(); ?>
		          <?php the_content(__('(more...)','bluenight')); ?>
		     <?php else: ?>
		          <p><?php _e('Sorry, no posts matched your criteria.','bluenight'); ?></p>
		     <?php endif; ?>	
	    </div>
        <?php comments_template(); ?>	
	</div>
	<?php get_sidebar(); ?>	 
</div>
<?php get_footer(); ?>

我这里是单独创建了一个新的名为 gust-book.php 的模版文件,就是在 page.php 上添加了 <?php comments_template(); ?> 来加入评论功能。

让 GuestBook 显示更多的评论

如果没有什么特殊的需求,用上面给出的代码就可以实现留言板了。不过有一点,如果只是简单的这么处理的话,页面会跟其他的文章页(single.php)一样显示每页 10 条(文章页显示评论的条数在后台的讨论中设置)左右的评论,我们一般都不会让详细页显示长条的评论。但是现在的留言板是专门用来显示留言的,每页的显示留言数量应该要比文章页多。按如何让留言板显示更多的评论呢?

这里就需要到 comments.php 页面来做处理了,让我们来看看 comments.php 页面的代码吧:

<div class="comments" id="comments">
<?php if ( have_comments() ) : ?>	
	<h2><?php comments_number(__('No Comments','bluenight'), __('One Comment','bluenight'), __('% Comments','bluenight') );?></h2>
	<div class="Ajax-comments" id="Ajax-comments">
	     <?php
                     // 针对Guest Book 显示每页35条评论(稍后我会把设置放到 BlueNight Panel 中的)  
		     if (is_page() && !$post->post_parent && get_the_title(get_the_ID()) == 'GuestBook') { 
			     articlecomments(get_the_ID(), 1, 35); 
			 } 
			 else { 
			     articlecomments(get_the_ID(), 1); 
			 }  
		?>
	</div>
<?php else : ?>
<?php if ('open' == $post->comment_status) : ?>
	 <?php else : ?>
		<p class="nocomments"><?php _e('Comments Closed.','bluenight'); ?></p>
	 <?php endif; ?>
<?php endif; ?>
</div>
<?php comment_form(); ?>

关键的判断在这里:

is_page() && !$post->post_parent && get_the_title(get_the_ID()) == 'Guest Book'
  • is_page() – 判断是否是 Page 类型的页面
  • !$post->post_parent – (可选) 这个判断是应为我希望输出的页面地址是 domain.com/guest-book/ 这样的目录层级
  • get_the_title(get_the_ID()) == ‘GuestBook’ 创建的页面的标题为 GuestBook 时才行,其余的选择带留言功能模版创建的页面也跟single页一样显示“讨论”中设置的留言条数

我这里使用了 articlecomments() 函数来显示留言列表,我这里把代码展示出来:

if (!function_exists('articlecomments')):
    function articlecomments($postID, $pageID, $perPage) {
        // Get comments by post_id
        $comments = get_comments('post_id='.$postID);
		$args = array('current'=>$pageID, 'echo'=>true);
		// 普通页面显示“讨论面板”中设置的 comments_per_page
                $comments_per_page = get_option('comments_per_page');
		
                // 留言板设置制定的 comments_per_page 则显示指定的条数
		if($perPage){
			$comments_per_page = $perPage;
		}
        
        echo '<ul class="commentlist" id="commentlist">';
		echo wp_list_comments('callback=comments_items&type=comment&page='.$pageID.'&per_page='.$comments_per_page, $comments);
		echo '</ul>';
        echo '<p class="comments-navigation" id="comments-navigation">';
        $comment_pages = paginate_comments_links($args);
        echo $comment_pages.'</p>';
    }
endif;

不过通常的主题不像 BlueNight 这样调用函数输出,而大致是这样的:

<div class="comments" id="comments">
<?php if ( have_comments() ) : ?>	
	<h2><?php comments_number(__('No Comments','bluenight'), __('One Comment','bluenight'), __('% Comments','bluenight') );?></h2>
	<div class="Ajax-comments" id="Ajax-comments">
	      <ul class="commentlist" id="commentlist">
		<?php echo wp_list_comments('callback=comments_items&type=comment&page='.$pageID.'&per_page='.$comments_per_page, $comments); ?>
	      </ul>
        <p class="comments-navigation" id="comments-navigation">
        $comment_pages = 
        <?php echo paginate_comments_links($args); ?>
        </p>
	</div>
<?php else : ?>
<?php if ('open' == $post->comment_status) : ?>
	 <?php else : ?>
		<p class="nocomments"><?php _e('Comments Closed.','bluenight'); ?></p>
	 <?php endif; ?>
<?php endif; ?>
</div>
<?php comment_form(); ?>

所以我们只要在 <?php echo wp_list_comments('callback=comments_items&type=comment&page='.$pageID.'&per_page='.$comments_per_page, $comments); ?> 这里加上之前的判断就 OK 了。

发布显示 GuestBook

写好 Guest Book 模版工作基本上就完成了,最后就是要创先新的页面,选择 Guest Book 模版,然后写点提示信息发布这个页面,如下图:

guest-book

OK!属于你的留言板就产生了!

声明:本文采用BY-NC-SA协议进行授权。转载请注明转自:如何给 WordPress 添加留言板

« »

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(Spamcheck Enabled)