首页 > 解决方案 > 允许 Wordpress 用户从他们的用户资料上传和设置帖子图片

问题描述

我有一个由 WP Store Locator 插件创建的自定义帖子类型。我已将元字段添加到帖子(商店列表)以将其链接到用户,以便用户可以编辑某些字段(如果他们拥有商店)。这适用于除媒体以外的所有领域。我对如何实现这一点感到有些困惑,因为媒体 postmeta(来自帖子的特色图像或只是自定义图像字段)具有自己的链接附件元数据。

我希望用户能够从他们的用户个人资料页面编辑/上传他们自己的特色图像或图像(作为自定义元字段)并将其保存到相关帖子中。我能够获取帖子 ID 并保存文本字段,但不能将图像保存/关联到帖子。

如果可能的话,我想使用 Wordpress 媒体上传功能,以使用户保持简单。

这是我当前的功能:

function tpo_save_extra_register_select_field_admin( $customer_id ){ 
    $userid = get_current_user_id();
    global $wpdb;
    
    //get array of all the post_ids where the wpsl_store_owner_id meta matches the current users ID
    $store_owners_post_ids = $wpdb->get_results( "SELECT post_id FROM wp_postmeta WHERE meta_key = 'wpsl_store_owner_id' AND meta_value = $userid");
 
    foreach ( $store_owners_post_ids as $store_owners_post_id ) {
            $store_id = $store_owners_post_id->post_id;
        
            //set a dynamic input id for each field to be updated
            $input_id = 'price_per_litre'.$store_id ;
            $input_id_name = 'store_name'.$store_id ;
            $input_id_address = 'store_address'.$store_id ;
            $input_id_pictures = 'pictures'.$store_id ;

                //if its set then save it
                if ( isset( $_POST[$input_id] ) ) {
                    update_post_meta( $store_owners_post_id->post_id, 'wpsl_price_per_litre', $_POST[$input_id] );
                }  
                if ( isset( $_POST[$input_id_name] ) ) {
                    $content = array(
                    'ID' => $store_id,
                    'post_title' =>  $_POST[$input_id_name]
                    );
                    wp_update_post($content) ;               
                }  
                if ( isset( $_POST[$input_id_address] ) ) {
                    update_post_meta( $store_owners_post_id->post_id, 'wpsl_address', $_POST[$input_id_address] );
                } 
                //DO SOMETHING HERE TO UPLOAD AN IMAGE AND LINK TO post_id
                if ( isset( $_POST[$input_id_pictures] ) ) {
                    update_post_meta( $store_owners_post_id->post_id, 'wpsl_pictures', $_POST[$input_id_pictures] );
                }  
    }
}

标签: phpwordpressuser-profilepost-meta

解决方案


推荐阅读