月度归档:2014年10月

wordpress文章发布到一定时间后自动关闭评论

最近有个客户询问小V如何让文章发布一个月之后自动关闭评论,其实这个功能实现起来很简单,用time()函数获取当前时间然后减去文章发布时间,然后判断差是否大于设置的时限,如果大于则将评论关闭即可,详细代码如下:

function close_comments( $posts ) {
   
                     if ( !is_single() ) { return $posts; }
   
                     if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( 30 * 24 * 60 * 60 ) ) { //以秒为单位,设置时间为一个月
                     $posts[0]->comment_status = 'closed';
                     $posts[0]->ping_status    = 'closed';
                     }
   
             return $posts;
             }
             add_filter( 'the_posts', 'close_comments' );

将以上代码加入到当前使用的wordpress主题的functinos.php文件即可实现文章发布超过一个月后就自动关闭评论的功能(PS:如果php的系统时间不正确可能造成文章评论关闭时间不正确的情况)。

wordpress在feed中过滤特定分类

最近有一位群里的小伙伴找到小V询问如何把一些分类下的文章在feed中排除掉,其实要实现在feed下排除一些特定的文章很简单,只要在主题的functions.php文件中加上一段代码即可,代码如下:

function v7v3_exclude($query)
{
   if ($query->is_feed)
      {
       $query->set('cat','-2');
      }
   return $query;
}
   
add_filter('pre_get_posts','v7v3_exclude');

其中的2就是分类ID,-2表示排除分类id为2的分类的文章。

过滤wordpress评论中的html代码

前两天小V接到客户反应,网站收到很多莫名其妙的评论,评论的内容是一大堆html代码,在前台显示的其实是一段广告代码,为此客户非常烦恼,其实遇到这种情况直接在评论提交的时候把html代码过滤下即可,下面是小V当时的处理方法:

function plc_comment_post( $incoming_comment ) {
 
 
        $incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']);
 
        $incoming_comment['comment_content'] = str_replace( "'", ''', $incoming_comment['comment_content'] );
 
        return( $incoming_comment );
}
 
function plc_comment_display( $comment_to_display ) {
 
        $comment_to_display = str_replace( ''', "'", $comment_to_display );
 
        return $comment_to_display;
}
 
add_filter( 'preprocess_comment', 'plc_comment_post', '', 1);
add_filter( 'comment_text', 'plc_comment_display', '', 1);
add_filter( 'comment_text_rss', 'plc_comment_display', '', 1);
add_filter( 'comment_excerpt', 'plc_comment_display', '', 1);

只需要将以上代码加入到当前使用的主题的functions.php文件即可,这样wordpress就会在收到评论的时候自动把评论中的html代码过滤掉~

删除wordpress插入图片时默认自带的宽高属性

小V最近在学习制作只适应网页,在制作自适应wordpress模板的时候遇到一个问题使用以下css代码并没有生效:

img{
max-width:100%;
height: auto;
}

搞了半天不知道哪出现问题,后边查看页面源代码才发现原来wordpress默认的在给文章插入图片都会带一个宽高属性,但是这样对制作自适应网页是非常不利的,下面小V给出处理方法,其实很简单只要在主题的functions.php加一段代码即可,代码如下:

add_filter( 'post_thumbnail_html', 'remove_wps_width', 10 );
add_filter( 'image_send_to_editor', 'remove_wps_width', 10 );
  
function remove_wps_width( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}