Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация Как установить аватар профиля пользователя программно?
3ответ(ов) в теме
lancer
не в сети 1 год
На сайте с 11.07.2020
Участник
Тем 8
Сообщения 15
1
13:40
Версия WP-Recall: 16.18.22

Программно создаю большое количество пользователей, возникла необходимость программно им загрузить аватар из ссылки на картинку. Как это можно сделать?

0
Владимир (Otshelnik-Fm)
не в сети 4 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18498
2
14:46

Здравствуйте.

Используйте update_user_meta() и поле называется rcl_avatar - там хранится путь до авы. Например такой: http://test-recall.otshelnik-fm.ru/wp-content/uploads/rcl-uploads/avatars/17.jpg

0
lancer
не в сети 1 год
На сайте с 11.07.2020
Участник
Тем 8
Сообщения 15
3
04:53

Попробовал, но загружается только большая исходная картинка без создания миниатюр.
Сделал видоизмененную версию функции 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:53lancerПричина: не указано
19.07.2020 04:54lancerПричина: не указано
19.07.2020 04:54lancerПричина: не указано
19.07.2020 04:55lancerПричина: не указано
0
Вы не имеете права на публикацию сообщений в этой теме