在另一个bp页面上使用buddypress头像上传和裁剪功能

时间:2016-08-23 03:48:38

标签: image upload crop preview buddypress

目前我正在使用BP头像在网站上创建用户个人资料图片。

现在,我想将BP Avatar的上传和裁剪+预览功能用于另一个页面,并使用自定义设置另一个图像用途。

我尝试在新页面中复制和编辑代码,但它无法正常工作,甚至是预览。

希望有人可以提供帮助。

三江源。

1 个答案:

答案 0 :(得分:0)

这是代码。当bbp没有检测到用户时,我发现问题就开始了,因为在bbp核心中,他们从url获取用户id,而在我的情况下,它不起作用。我编写了需要完成的代码片段。在我的情况下,我将端点内的视图插入到woocommerce的my-account中。

  1. 覆盖脚本获取数据的功能。
  2. 包含所有必要的脚本。
  3. 插入我的内容功能。
  4. 我将此过滤器用于 bp_attachment_avatar_script_data

        /**
         * Override  the avatar script data
         *
         * @param $script_data
         * @param $object
         *
         * @return int
         */
        public function noys_avatar_script_data( $script_data, $object ) {
            $user_id  = get_current_user_id();
    
            if ( ! empty( $user_id ) ) {
                // Should we load the the Webcam Avatar javascript file.
                if ( bp_avatar_use_webcam() ) {
                    $script_data['extra_js'] = array_merge( $script_data['extra_js'], array( 'bp-webcam' ) );
                }
    
                $script_data['bp_params'] = array(
                    'object'     => 'user',
                    'item_id'    => $user_id,
                    'has_avatar' => bp_get_user_has_avatar( $user_id ),
                    'nonces'     => array(
                        'set'    => wp_create_nonce( 'bp_avatar_cropstore' ),
                        'remove' => wp_create_nonce( 'bp_delete_avatar_link' ),
                    ),
                );
    
                // Set feedback messages.
                $script_data['feedback_messages'] = array(
                    1 => __( 'There was a problem cropping your profile photo.', 'buddypress' ),
                    2 => __( 'Your new profile photo was uploaded successfully.', 'buddypress' ),
                    3 => __( 'There was a problem deleting your profile photo. Please try again.', 'buddypress' ),
                    4 => __( 'Your profile photo was deleted successfully!', 'buddypress' ),
                );
            }
    
            return $script_data;
        }
    

    这是我的功能,将内容包含在woocommerce端点中。

    /**
     * Endpoint HTML content.
     */
    public function profile_picture_endpoints_content1() {
        $bd = buddypress();
        bp_core_register_common_scripts();
        wp_enqueue_style( 'thickbox' );
        wp_enqueue_script( 'media-upload' );
    
        bp_core_add_jquery_cropper();
    
        bp_attachments_enqueue_scripts( 'BP_Attachment_Avatar' );
        bp_attachments_get_template_part( 'avatars/index' );
    }
    

    这就是我需要解决这个无证件的问题!