|
add_action('save_post', 'save_post_my_func', 10 , 2);
function save_post_my_func() {
global $wpdb;
$content = $post->post_content;
if (!stristr($content, '/wp-content/uploads/'))
{
// 如果說當前日誌中沒有任何附件連結,我將這個欄位更新為空白
update_post_meta($post_id, '_wp_post_attach_total_', '');
return ;
}
$data = array();
if (preg_match_all('/(href|src)=[^>]+/wp-content/uploads/(sites/d+/)?([^"'>s]+)["'>s]/is', $content, $match))
{
// 統計所有帶有附件連結的img還有link
$files = array_flip(array_flip($match[3]));
$sql = sprintf("SELECT `post_id` FROM `%s` WHERE `meta_key`='_wp_attached_file' AND (`meta_value`='%s');",
$wpdb->postmeta, implode("' OR `meta_value`='", $files));
(FALSE != ($row = $wpdb->get_col($sql))) && $data = $row;
}
// 統計日誌中的相簿
if (preg_match_all('/?)([^"']]*)1s*]/is', $content, $gallery))
{
$where = array();
$gallery = explode(',', implode(',', $gallery[2]));
foreach ($gallery as $val)
{
$where[] = '`post_id`='.trim($val);
}
$sql = sprintf("SELECT `post_id` FROM `%s` WHERE `meta_key`='_wp_attached_file' AND (%s);", $wpdb->postmeta, implode(' OR ', $where));
(FALSE != ($row = $wpdb->get_col($sql))) && $data = array_merge($data, $gallery);
}
// 統計當前日誌中的縮圖
if (FALSE != ($thumb_id = get_post_meta($post_id, '_thumbnail_id')))
{
$data[] = $thumb_id[0];
}
// 為了後續擴充,以及向其他應用開放擴充,這裡我建立了一個過濾鉤子
$data = apply_filters('wp_post_attach_total', $data, $post_id);
if (!empty($data))
{
$data = array_flip(array_flip($data));
update_post_meta($post_id, '_wp_post_attach_total_', implode(',', $data));
}
} |