文档章节

wordpress功能集成(四)改变评论框样式

drewin
 drewin
发布于 2013/05/14 22:55
字数 1047
阅读 81
收藏 3

之所以将这篇教程放前面,是因为前面两节教程刚讲了过滤器和钩子,所以这篇文章就作为wordpress过滤器的一个实例来看,这篇教程的用途:修改评论表单样式,删除评论表单前面或后面的多余内容,给评论表单添加内容。前面wordpress主题制作基础教程之制作评论模板我们添加表单使用了wordpress提供的一个函数comment_form();该函数位于wp-includes/comment-template.php文件,函数介绍:

  1. <?php   
  2. comment_form( $args$post_id );   
  3. //参数$args是一个数组,用来配置表单的一些显示内容   
  4. //$post_id为评论表单对应的文章ID,默认为当前文章ID。   
  5. ?>  

一、修改表单配置

对于数组参数$args到底有哪些呢?我们看到comment_form函数的源码中,在定义一个数组$defaults的后面有一行代码

  1. $args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) );  

这行代码是函数中第一次出现参数$args的地方,也就是将传入的数组参数跟数组$defaults比较替换,将$args中的元素去替换$defaults中对应键的元素,所以只要是$defaults中出现了的元素,$args就可以有:

  1. $defaults = array(   
  2.         'fields'               => apply_filters( 'comment_form_default_fields', $fields ),   
  3.         'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',   
  4.         'must_log_in'          => '<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',   
  5.         'logged_in_as'         => '<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',   
  6.         'comment_notes_before' => '<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>',   
  7.         'comment_notes_after'  => '<p class="form-allowed-tags">' . sprintf( __( 'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s' ), ' <code>' . allowed_tags() . '</code>' ) . '</p>',   
  8.         'id_form'              => 'commentform',   
  9.         'id_submit'            => 'submit',   
  10.         'title_reply'          => __( 'Leave a Reply' ),   
  11.         'title_reply_to'       => __( 'Leave a Reply to %s' ),   
  12.         'cancel_reply_link'    => __( 'Cancel reply' ),   
  13.         'label_submit'         => __( 'Post Comment' ),   
  14.     );  

本工作室的评论表单配置如下,就改变了几个很简单的元素:

  1. $defaults = array(   
  2.     'comment_field'        => '<p class="comment-form-comment"><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',   
  3.     'comment_notes_before' => '',   
  4.     'label_submit'         => __( '提交评论' ),   
  5.     'comment_notes_after' =>''  
  6. );   
  7. comment_form($defaults);   

我将comment_field-也就是评论内容输入的文本域前面的“评论”字样删掉了,然后comment_notes_before为空-也就是那个提醒“您的邮箱地址不会被公开”,然后comment_notes_after也为空-就是评论表单后面那个提示你可以使用哪些标签。

如果你想修改对应的某些项,找到你的主题的comment_form函数(一般来说在comments.php文件),然后看他的参数,自行修改。。。

二、过滤器应用

不过到这里好像跟我说的过滤器实例还没扯上啊,我们看到comment_form在$defaults数组的前面还有一个数组

  1. $fields =  array(   
  2.         'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .   
  3.                     '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',   
  4.         'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .   
  5.                     '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',   
  6.         'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' .   
  7.                     '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',   
  8.     );  

这个数组就是评论表单前面的三个评论者信息输入文本框,我想也有很多人需要修改这个东西,额,实际上这个$fields数组也在$defaults数组中了,$defaults数组的第一个元素就是,不过我们还是要转个弯、多走一步路,以便讲解过滤器的使用。$defaults的第一个元素是:

  1. 'fields' => apply_filters( 'comment_form_default_fields', $fields ),  

这里提供了一个过滤器comment_form_default_fields,修改的参数就是$fields;要修改这个参数,只需要添加一个过滤器,比如:

  1. <?php   
  2. add_filter('comment_form_default_fields','my_custom_fields');   
  3. function my_custom_fields($fields){   
  4.     $fields =  array(   
  5.         'author' => '<p class="comment-form-field comment-form-author">' . '<label for="author">&nbsp;&nbsp;称呼*&nbsp;</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .   
  6.                     '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="13"' . $aria_req . ' /></p>',   
  7.         'email'  => '<p class="comment-form-field comment-form-email"><label for="email">&nbsp;&nbsp;Email*&nbsp;</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .   
  8.                     '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="13"' . $aria_req . ' /></p>',   
  9.         'url'    => '<p class="comment-form-field comment-form-url"><label for="url">&nbsp;&nbsp;' . __( 'Website' ) . '&nbsp;&nbsp;</label>' .   
  10.                     '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="13" /></p>',   
  11.     );   
  12.     return $fields;   
  13. }   
  14. ?>  

注意:过滤器函数必须要有返回值。。。

尽情的查找apply_filters函数,然后尽情的修改吧。。

本文转载自:http://www.ashuwp.com/

共有 人打赏支持
drewin
粉丝 28
博文 121
码字总数 43979
作品 0
海淀
程序员
私信 提问
米扑博客:总结分享 WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商

在网上查资料闲逛,偶然间看到了张戈博客的评论框有点意思,于是就收走拿到了我的米扑博客。 本文为米扑博客原创:总结分享 WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商 Wo...

sunboy2050
2017/10/21
0
0
米扑博客:总结分享 WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商

在网上查资料闲逛,偶然间看到了张戈博客的评论框有点意思,于是就收走拿到了我的米扑博客。 WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商,如下图: 米扑博客评论演示效果:...

mimvp
2017/10/21
0
0
蝉知企业门户系统 5.3.3 正式版发布

蝉知企业门户系统 5.3.3 正式版发布了。 蝉知企业门户系统是由业内资深开发团队开发的一款专向企业营销使用的企业门户系统,企业使用蝉知系统可以非常方便地搭建一个专业的企业营销网站,进行...

it1000001001
2016/06/27
2.1K
14
收集自网络的wordpress 分页导航的代码教程(全网最全版)

wordpress 分页导航是用来切换文章的一个功能,添加了 wordpress 分页导航后,用户即可自由到达指定的页面数浏览分类文章,而这样的一个很简单功能却有很多朋友在用插件:WP-PageNavi,插件的...

Rhymo-Wu
2018/06/20
0
0
Gitblog v2.1.2 发布,开源 markdown 博客系统

Gitblog v2.1.2 版本发布更新,更新内容如下: 增强安全性 完善 wordpress 导入提示信息 按显示日期归档 bug fix 简介 GitBlog是一个简单易用的Markdown博客系统,它不需要数据库,没有管理后...

jockchou
2015/08/12
1K
8

没有更多内容

加载失败,请刷新页面

加载更多

容器服务

简介 容器服务提供高性能可伸缩的容器应用管理服务,支持用 Docker 和 Kubernetes 进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。 产品架构 容器服务...

狼王黄师傅
昨天
3
0
高性能应用缓存设计方案

为什么 不管是刻意或者偶尔看其他大神或者大师在讨论高性能架构时,自己都是认真的去看缓存是怎么用呢?认认真真的看完发现缓存这一块他们说的都是一个WebApp或者服务的缓存结构或者缓存实现...

呼呼南风
昨天
12
0
寻找一种易于理解的一致性算法(扩展版)

摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可...

Tiny熊
昨天
2
0
聊聊GarbageCollectionNotificationInfo

序 本文主要研究一下GarbageCollectionNotificationInfo CompositeData java.management/javax/management/openmbean/CompositeData.java public interface CompositeData { public Co......

go4it
昨天
3
0
阿里云ECS的1M带宽理解

本文就给大家科普下阿里云ECS的固定1M带宽的含义。 “下行带宽”和“上行带宽” 为了更好的理解,需要先给大家解释个词“下行带宽”和“上行带宽”: 下行带宽:粗略的解释就是下载数据的最大...

echojson
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部