我有一个小问题,代码大部分时间都能正常工作。我刚刚发现,当我批量编辑自定义帖子类型时,它无法使用。如果我在个人帖子页面上点击publish,则会发布自定义帖子类型,并更新用户meta。
如果我使用批量编辑一次发布多篇文章,则不会更新用户元。
function sa_ads_count() {
global $wpdb, $post;
$authordata = get_userdata($post->post_author);
$author = $authordata->ID;
// get initial count
$single = true;
$ads_count = get_user_meta( $author, \'ads_count\', $single );
if ( strlen( $ads_count ) > 0 ) {
$ads_count = intval( $ads_count ); // make sure it\'s a number
$ads_count++; // increment by one
} else {
// meta isn\'t set, so we\'ll create it
$rows = $wpdb->get_results( $wpdb->prepare( "SELECT post_status, COUNT(ID) as count FROM $wpdb->posts WHERE post_author = %d AND post_type = \'post_type\' GROUP BY post_status", $author ) );
$stats = array();
foreach ( $rows as $row )
$stats[ $row->post_status ] = $row->count;
$ads_count = isset($stats[\'publish\']) ? $stats[\'publish\'] : 0;
}
update_user_meta( $author, \'ads_count\', $ads_count );
}
add_action( \'pending_to_publish\', \'sa_ads_count\' );
知道这里怎么了吗?这是WordPress的限制还是可以解决的?问题是,我需要这个钩子,因为我只想为每个用户计算和存储我批准和发布的帖子数量。
稍后,我想根据用户批准的帖子数量直接将新帖子状态更改为发布。这一点我已经做到了。