最新下载
热门教程
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 
WordPress统计当前日志中所有的附件错误怎么解决
时间:2022-06-25 19:00:42 编辑:袖梨 来源:一聚教程网
在这里稍微分析下:
原理:
无论是wordpress什么版本,原理都是一样的,都是通过这段核心代码进行查询
| 代码如下 | 复制代码 | 
| 
 $args = array( $attachments = get_posts( $args );  | 
	  |
不过呢,wordpress在3.6以后呢,为大家封装了一个方法get_attached_media,至此以后查询就变得类似像下面一样简单了
// 获取所有类型附件
$attachments = get_attached_media( '', $post->ID );
// 获取所有的音频附件:
$attachments = get_attached_media( 'audio', $post->ID );
这样就OK了吗?
大家可以做一个这样的测试:
    先在一篇日志中插入5张图,保存;
    然后从这几张图中,随便删除2张,修改,保存(这个时候日志中只有3张图了)
    最后用这个函数再来看,输出还是5个post数据
为什么会这样?
这段代码是通过查询wp_posts表中所有post_parents字段为post_ID,并且post_type为attachment的数据,这样就会造成两个问题
    只统计插入的图片,不统计删除的图片
    post_parents的字段类型为BIGINT,这样只能统计一次,比如你在日志A插入了图片I,之后在日志B中再插入图片I,这样就没办法同时统计了
这样看来wordpress统计当前日志附件相当不准。
我是如何修正的
我思考了这么几个问题?
    用什么来记录当前日志的附件?
    在什么地方进行统计
    该如何取出
关于记录日志的附件,我选择了postmeta这个表来记录,增加一个meta_key;至于在什么地方统计,我选择了钩子save_post,整体代码如下:
| 代码如下 | 复制代码 | 
| 
 add_action('save_post', 'save_post_my_func', 10 , 2); function save_post_my_func() {     $content = $post->post_content;     $data = array();         (FALSE != ($row = $wpdb->get_col($sql))) && $data = $row;     // 统计日志中的相册         $sql = sprintf("SELECT `post_id` FROM `%s` WHERE `meta_key`='_wp_attached_file' AND (%s);", $wpdb->postmeta, implode(' OR ', $where));     // 统计当前日志中的缩略图     // 为了后续扩展,以及向其他应用开放扩展,这里我创建了一个过滤钩子  | 
	  |
大家可以通过下面的代码获取当前日志附件
| 代码如下 | 复制代码 | 
| 
 get_post_meta($post_id, '_wp_post_attach_total_');  | 
	  |
为什么要做这样的研究
初衷
原本是要统计wordpress有多少附件是上传后却用不到的,却发现wordpress提供的功能却有问题
后续
今后有时间,我会做一个清理wordpress的插件,敬请等待
相关文章
- 炉石传说标准模式轮盘术卡组推荐分享 11-04
 - 炉石传说标准小行星萨卡组推荐分享 11-04
 - 炉石传说基尔加丹轮盘术卡组推荐分享 11-04
 - 炉石传说宇宙彩虹DK高胜率卡组推荐分享 11-04
 - 炉石传说深暗领域德鲁伊卡组推荐分享 11-04
 - 过山车之星2景观评分提升方法分享 11-04