将现有用户自定义字段值添加到WooCommerce产品

时间:2019-02-19 作者:Z Crow

我将WooCommerce中的每个产品分配给一位作者。每个作者在注册时都会添加一个简短的个人简历,并将其保存在作者的用户帐户中。人们正在注册Profile Press。

我想在作者创建的每一个产品中插入这个生物领域,但我似乎能找到答案。提前谢谢。

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

您可以在插入新产品时(而不是在更新时)通过操作来实现这一点。由于您没有指定元密钥,因此此字段存储在用户As下,或者存储在产品上的元密钥:

add_action( \'wp_insert_post\', \'smyles_insert_user_product_data\', 10, 3 );

function smyles_insert_user_product_data( $post_ID, $post, $update ){

    if( $update || $post->post_type !== \'product\' ){
        return;
    }

    $user_id = get_current_user_id();

    if( $user_id ){
        $short_bio = get_user_meta( $user_id, \'some_meta_key\', true );
        if( ! empty( $short_bio ) ){
            update_post_meta( $post_ID, \'product_meta_key\', $short_bio );
        }
    }
}
这假设“短bio”存储在用户的meta中,因此您需要找出该meta键并替换some_meta_key 在上面的代码中为用户提供正确的一个。

然后,还需要定义要使用哪个元键在产品中设置该值,并替换product_meta_key 在上面

要查找使用的用户元密钥,可以使用“我的用户元显示”插件:https://wordpress.org/plugins/user-meta-display/ (虽然有点过时,但仍然有效)

UPDATE:

更新描述(post_content) 在将数据插入数据库之前,请使用以下选项:

add_action( \'wp_insert_post_data\', \'smyles_insert_user_product_data\', 10, 2 );

function smyles_insert_user_product_data( $data, $postarr ){

    // Non-empty ID means it\'s an update (don\'t want to modify on update)
    if( ! empty( $postarr[\'ID\'] ) || ! array_key_exists( \'post_type\', $postarr ) || $postarr[\'post_type\'] !== \'product\' ){
        return $data;
    }

    $user_id = get_current_user_id();

    if( $user_id ){
        $short_bio = get_user_meta( $user_id, \'some_meta_key\', true );
        if( ! empty( $short_bio ) ){
            $short_bio = wp_kses( $short_bio, true );
            $data[\'post_content\'] = wp_slash( $short_bio );
        }
    }

    return $data;
}

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: