分类目录

链接

2011 年 12 月
 1234
567891011
12131415161718
19202122232425
262728293031  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > PHP > 正文
禁用WordPress 3.3草稿
PHP 评论(6) 阅读(8,200)

一向不喜欢用插件的我,在博客升级到WP3.3简体中文版后,草稿问题就出现了!嘿嘿,解决方法和以前的版本一样~

禁止自动生成 auto-draft 的不可见草稿:
在wp-admin/includes/post.php中,从第417行开始,有一个if判断,代码如下:

  1. if ( $create_in_db ) {
  2. // Cleanup old auto-drafts more than 7 days old
  3. $old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );
  4. foreach ( (array) $old_posts as $delete )
  5. wp_delete_post( $delete, true ); // Force delete
  6. $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
  7. $post = get_post( $post_id );
  8. } else {

解释一下这段代码的功能,首先,清除七天以前的自动草稿,然后插入一条新草稿,如果你继续写文章并发布,那么这条草稿就被使用了,包括在后台首页有一个快速发布,也用到了这个。但如果你仅仅是点击了new post(添加文章),接下来没有输入任何内容就跳到别的页面去了或关闭了,此时仍然会生成一个自动草稿,而这个草稿,是后台不可见的,是垃圾数据。

所以修改了一下代码,将这个if判断中的内容替换成以下内容,代码如下:

  1. if ( $create_in_db ) {
  2. // modify by akii start
  3. global $current_user;
  4. $post_auto_draft = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = 'auto-draft' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" );
  5. if ($post_auto_draft){
  6. $post = $post_auto_draft;
  7. } else {
  8. $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
  9. $post = get_post( $post_id );
  10. }
  11. // modify by akii end
  12. } else {

原理及说明:当数据库中有一条或多条状态为”auto-draft”的自动草稿时,取ID最小的,新文章即使用此条记录。如果没有此种类型的数据,才会新插入一条数据。并且查询数据时是根据当前的用户来判断,不会出现多用户时出错。这样就可以避免了自动草稿(auto-draft)的冗余垃圾数据。保证了日志ID的连续性。但最后我要提醒一句,如果你在日志中添加了附件,如图片,那么该图片也会占用一条数据,即一个连续的ID,所以,如果你以ID形式,发现日志有时候不是连续的ID了,那么,有可能是你日志的附件占用了临近的ID。

 

如果你有更好的办法一定要告诉我哦!谢谢分享~

 

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:禁用WordPress 3.3草稿 | Bruce's Blog

禁用WordPress 3.3草稿:目前有6 条留言

  1. 末鱼 : 2012年02月12日下午 8:04 回复

    博主你好,按照你的方法修改了之后网站就提示错误了,不知道是什么问题。

    • 数据库之家 : 2012年02月12日下午 8:10 回复

      等会我把我改好的发给你吧!

      • 末鱼 : 2012年02月12日下午 8:11 回复

        好的,谢谢!

  2. 数据库之家 : 2012年02月12日下午 8:09 回复

    可能是你没改对,等会我把我改好的发给你吧!

  3. 苹果 : 2012年11月04日下午 4:42 回复

    3.42 有效吗??
    看ls评论说文章的代码的有问题?

    • 数据库之家 : 2012年11月04日下午 4:45 回复

      应该有效,不过,我最近没用它了,因为更新版本又得改一次,麻烦,用一个比较出名的插件,自动清理,很方便实用,后台插件,又会影响前台页面速度。插件名叫 WP Cleaner

发表评论

留言无头像?