Old

更改comment_form()函數表单顺序

不好意思,还是 WordPress 3.0 新增的表单生成函数 comment_form()

前面2篇说的是使用评论表单函数后实现 Ctrl + Enter 的方法和支持 willin 的评论表情的方法,具体参考:

WP3.0新增的comment_form()函數实现Ctrl+Enter提交评论

comment_form()函數实现willin的评论表情插入

》》现在这篇文章说的是表单顺序,先用图片说明问题,先看原来的评论样式:

》》使用表单函数 comment_form() 生成的评论样式:

》》从上面2个图片可以看出,昵称、邮箱、网址的标签跑到前面来了,对于很多主题来说不太雅观,所以需要改造,怎么改造呢?这是个难题,我也折腾了很久,后来发现可以用正则来“挪位”,于是开始折腾正则,纳闷的是我对正则非常不熟悉,后来在一个国外主题找到一个相关代码,稍微修改一下成功,撒花~

下面是方法

把下面的 php 函数加在 <?php comment_form(); ?>  前面就能实现 input 挪到前面鸟,具体原理请看正则表达式和php的preg_replace函数,当然还有 comment_form() 的参数 $fields

<?php
	// This is stupid fields customization
	function zbench_comment_fields ($fields) {
		foreach ($fields as $name => $field) {
			$fields[$name] = preg_replace('/(<label(?:.*?)>(?:.*?)<\/label>)\s*(<span class="required">\*<\/span>)?\s*(<input(?:.*?)\/>)/','\3\1\2',$field);
		}
		return $fields;
	}
	add_filter('comment_form_default_fields', 'zbench_comment_fields');
?>

最终效果:

又搞定收工鸟~

zww
or
oooo

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25314

45 comments

  1. cho cho Google Chrome 6.0.472.63 Google Chrome 6.0.472.63 Windows 7 Windows 7

    沙发。我还在坚持着2.9.2。

    沙发
  2. winy winy Google Chrome 7.0.517.24 Google Chrome 7.0.517.24 Windows 7 Windows 7

    真麻烦,,,还不如以前的方便

    板凳
    • zwwooooo zwwooooo Google Chrome 7.0.536.2 Google Chrome 7.0.536.2 Windows 7 Windows 7

      @winy
      直接用是方便了,但要自定义就麻烦鸟

  3. ZDAvril ZDAvril ChromePlus 1.4.1.0 ChromePlus 1.4.1.0 Windows 7 Windows 7

    很好。又学到了。最近在修改个主题。也许可以用上。 :razz:

    地板
  4. fblue fblue ChromePlus 1.4.1.0 ChromePlus 1.4.1.0 Windows 7 Windows 7

    我是在Functions.php直接更改字段,差不多,只是手动修改 $arg['url'] = ''...

    4楼
    • zwwooooo zwwooooo Google Chrome 7.0.536.2 Google Chrome 7.0.536.2 Windows 7 Windows 7

      @fblue
      应该是你这样修改才对,但我还不了解

    • fblue fblue Safari 5.0.1 Safari 5.0.1 Mac OS X  10.6.4 Mac OS X 10.6.4

      @zwwooooo

      function mytheme_formchange($arg) {
      $arg['author'] = '<p class="comment-form-author">' . '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /><label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
      		            '</p>';
      					$arg['email'] = '<p class="comment-form-email"><input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .'</p>';
          $arg['url'] = '<p class="comment-form-url"><input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" />' .'<label for="url">' . __( 'Website' ) . '</label></p>';
      	 $arg['url'] = '<p class="comment-form-url"><input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" />' .'<label for="url">' . __( 'Website' ) . '</label></p>';
      	
          return $arg;
      }
      add_filter('comment_form_default_fields', 'mytheme_formchange');

      这个就是我用的。。。

    • zwwooooo zwwooooo Google Chrome 7.0.536.2 Google Chrome 7.0.536.2 Windows 7 Windows 7

      @fblue
      收藏,或许以后用得到。

    • Solo Solo Firefox 3.6.10 Firefox 3.6.10 Windows XP Windows XP

      @fblue
      哇,看到一个苹果的。

  5. Firm Firm Google Chrome 6.0.490.0 Google Chrome 6.0.490.0 Windows XP Windows XP

    完美之,还真的看到很多昵称、邮箱、网址在前面的站点

    5楼
  6. QiQiBoY QiQiBoY Firefox 3.6.10 Firefox 3.6.10 Windows 7 Windows 7

    这个新函数原来这么让人蛋疼。。 :lol:

    6楼
  7. 秋上书 秋上书 Google Chrome 7.0.523.0 Google Chrome 7.0.523.0 Windows XP Windows XP

    国庆诶,快乐么。。 :mrgreen:

    7楼
  8. Kars Kars Firefox 3.6.9 Firefox 3.6.9 Windows XP Windows XP

    代码 居然被 封装成 这样、、 :shock:

    8楼
  9. 木本无心 木本无心 Google Chrome 6.0.472.63 Google Chrome 6.0.472.63 Windows 7 Windows 7

    的确美观多了。

    9楼
    • zwwooooo zwwooooo Google Chrome 7.0.536.2 Google Chrome 7.0.536.2 Windows 7 Windows 7

      @木本无心
      其实本来博客的评论表单就是这样的,只是用了这个函数不能很方便地定义样式

  10. 万戈 万戈 Firefox 3.6.10 Firefox 3.6.10 Windows XP Windows XP

    我还是很不习惯用comment_form(),就像wp_list_comments()函数刚出来的时候一样

    10楼
  11. 竹下无为梦 竹下无为梦 Firefox 3.6.10 Firefox 3.6.10 Windows XP Windows XP

    我没注意过这个。貌似我的本身就是这种结局吧。

    11楼
  12. 园子 园子 Firefox 3.6.8 Firefox 3.6.8 Windows XP Windows XP

    哈哈
    还是在后面看着好看。

    12楼
  13. 浩子 浩子 Internet Explorer 8.0 Internet Explorer 8.0 Windows 7 Windows 7

    我用的默认主题就是那样……

    13楼
    • zwwooooo zwwooooo Google Chrome 7.0.536.2 Google Chrome 7.0.536.2 Windows 7 Windows 7

      @浩子
      呵呵,默认主题就是个标准代表,它功能很强但样子很一般——适合给博主折腾修改

  14. Solo Solo Firefox 3.6.10 Firefox 3.6.10 Windows XP Windows XP

    CSS可以调整的啊。

    14楼
    • zwwooooo zwwooooo Opera 10.62 Opera 10.62 Windows 7 Windows 7

      @Solo
      是可以,但要固定宽度,不然排不好吧

      • Solo Solo Firefox 3.6.10 Firefox 3.6.10 Windows XP Windows XP

        方法有多种,(*^__^*) 嘻嘻。

    • zwwooooo zwwooooo Opera 10.62 Opera 10.62 Windows 7 Windows 7

      @Solo
      哇你跑到第3个嵌套去了,奇怪怎么跑进去的~

    • Solo Solo Firefox 3.6.10 Firefox 3.6.10 Windows XP Windows XP

      @zwwooooo
      就这么进去的...

    • zwwooooo zwwooooo Opera 10.62 Opera 10.62 Windows 7 Windows 7

      @Solo
      以前用jQ实现的倒是容易跑进去(jq没加载完),现在用的是html为啥还会跑进去呢?呵呵,不管鸟

    • Solo Solo Firefox 3.6.10 Firefox 3.6.10 Windows XP Windows XP

      @zwwooooo
      我不是一般人..(*^__^*) 嘻嘻。

  15. 铁猴子 铁猴子 Google Chrome 9.0.565.0 Google Chrome 9.0.565.0 Windows 7 Windows 7

    评论框下面的那些html标签提示从哪里去掉啊?

    15楼
    • zwwooooo zwwooooo Google Chrome 8.0.552.23 Google Chrome 8.0.552.23 Windows 7 Windows 7

      @铁猴子
      最简单的方法是用css把这段隐藏了,打开style.css,加上
      .form-allowed-tags{display:none;}

  16. 二道贩子 二道贩子 Internet Explorer 6.0 Internet Explorer 6.0 Windows XP Windows XP

    找了很多关于这个函数的文章,其实这个并不是简化了,只不过是换个地方放那些代码,这个默认的又不得大家的喜欢,还是需要自己用代码来覆盖之。

    16楼
    • zwwooooo zwwooooo Firefox 4.0 Firefox 4.0 Windows 7 Windows 7

      @二道贩子
      这里的“简化”是指comments.php的评论框就扔一个函数就行了,其实大部分主题作者对这个评论框封包成函数不爽。

  17. 小文 小文 Google Chrome 12.0.742.100 Google Chrome 12.0.742.100 Windows XP Windows XP

    这新的真麻烦 想自定义都不会了。怎么改变文字誒。。

    17楼
  18. myechineseued myechineseued Firefox 8.0.1 Firefox 8.0.1 Windows 7 x64 Edition Windows 7 x64 Edition

    感谢的一把鼻涕一把泪啊!为这个问题纠结一个星期了,今天终于在你这找到答案了~

    18楼

Leave a Reply