批量编辑/更新时更新POST META

时间:2013-04-19 作者:ovidiubica

我有一个小问题,代码大部分时间都能正常工作。我刚刚发现,当我批量编辑自定义帖子类型时,它无法使用。如果我在个人帖子页面上点击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的限制还是可以解决的?问题是,我需要这个钩子,因为我只想为每个用户计算和存储我批准和发布的帖子数量。

稍后,我想根据用户批准的帖子数量直接将新帖子状态更改为发布。这一点我已经做到了。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

尝试使用$post参数:

add_action( \'pending_to_publish\', \'sa_ads_count\' );

function sa_ads_count( $post )
{
    // use the $post variable here, not the missing global.
}

结束

相关推荐

在xmlrpc_Publish_POST期间检查POST格式

WordPress显然在$post 对象在期间publish_post 这(通常)不是问题,因为您可以通过get_post_format( $post->ID ) 循环外部。这似乎在xmlrpc_publish_post 或app_publish_post. 人们必须解决这个问题,才能在移动/桌面应用程序上使用插件/主题功能。我的具体代码如下,以防我这边出错。function posse_twitter( $post_ID ) { error_log(\'Executing poss