3ответ(ов) в теме
Попробовал, но загружается только большая исходная картинка без создания миниатюр.
Сделал видоизмененную версию функции rcl_avatar_upload с созданием миниатюр
function rcl_avatar_url_upload($img_url, $user_id) {
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
global $rcl_avatar_sizes;
$upload = array();
$tmpname = current_time( 'timestamp' ) . '.jpg';
$dir_path = RCL_UPLOAD_PATH . 'avatars/';
$dir_url = RCL_UPLOAD_URL . 'avatars/';
if ( ! is_dir( $dir_path ) ) {
mkdir( $dir_path );
chmod( $dir_path, 0755 );
}
$tmp_path = $dir_path . 'tmp/';
$tmp_url = $dir_url . 'tmp/';
if ( ! is_dir( $tmp_path ) ) {
mkdir( $tmp_path );
chmod( $tmp_path, 0755 );
} else {
foreach ( glob( $tmp_path . '*' ) as $file ) {
unlink( $file );
}
}
$data = base64_encode( file_get_contents($img_url) );
$data = str_replace( 'data:image/png;base64,', '', $data );
$data = str_replace( ' ', '+', $data );
$data = base64_decode( $data );
$upload['file']['type'] = 'image/png';
$upload['file']['name'] = $tmpname;
$upload['file']['tmp_name'] = $tmp_path . $tmpname;
$upload['file']['size'] = file_put_contents( $upload['file']['tmp_name'], $data );
$mime = explode( '/', $upload['file']['type'] );
$kb = $upload['file']['size'] / 1024;
if ( $kb > rcl_get_option( 'avatar_weight', 1024 ) ) {
wp_send_json( array(
'error' => __( 'Size exceeded', 'wp-recall' )
) );
}
$ext = explode( '.', $filename );
if ( $mime[0] != 'image' ) {
wp_send_json( array(
'error' => __( 'The file is not an image', 'wp-recall' )
) );
}
list($width, $height) = getimagesize( $upload['file']['tmp_name'] );
if ( $width > $height )
$src_size = $height;
else
$src_size = $width;
array_map( "unlink", glob( $dir_path . $user_id . "-*.jpg" ) );
$rcl_avatar_sizes[999] = $src_size;
foreach ( $rcl_avatar_sizes as $key => $size ) {
$filename = '';
if ( $key != 999 ) {
$filename = $user_id . '-' . $size . '.jpg';
} else {
$filename = $user_id . '.jpg';
$srcfile_url = $dir_url . $filename;
}
$file_src = $dir_path . $filename;
$rst = rcl_crop( $upload['file']['tmp_name'], $size, $size, $file_src );
}
if ( function_exists( 'ulogin_get_avatar' ) ) {
delete_user_meta( $user_id, 'ulogin_photo' );
}
update_user_meta( $user_id, 'rcl_avatar', $srcfile_url );
}
Редакции сообщения
19.07.2020 04:53Причина: не указано
19.07.2020 04:54Причина: не указано
19.07.2020 04:54Причина: не указано
19.07.2020 04:55Причина: не указано
Вы не имеете права на публикацию сообщений в этой теме