Задать вопрос
@ligisayan

Как импортировать на сайт wordpress пользователей на кириллице?

Всем привет! На сайте под управлением wordpress установлен
плагин Имена пользователей на кириллице.
С помощью плагина ClassiPress Ads Importer plugin импортирую пользователей с объявлениями.

Если имена пользователей на латинице, то все отрабатывает отлично, но если авторы прописаны кириллицей, то независимо новые пользователи это или существующие - в строке
wp_set_object_terms( $post_id, array(intval($term['term_taxonomy_id'])), 'ad_cat');
получаю ошибку:
Fatal error: Cannot use object of type WP_Error as array
, причем сам пользователь успевает зарегистрироваться (отображается в админке)

Понимаю, что импорт срабатывает раньше, чем плагин allow-cyrillic-usernames успевает отработать - как это можно исправить?

файл плагина classi-importer.class.php
foreach($rows as $row) {
	$post['post_title'] = $row['post_title'];
	$post['post_content'] = $row['post_content'];
	$post['post_status'] = $row['post_status'];
	$post['post_type'] = 'ad_listing';
	if(isset($row['user_name'])) {	
		$user_id = username_exists($row['user_name']);
	        if(!$user_id) {
			$random_password = wp_generate_password(12, false);
			$user_id = wp_create_user($row['user_name'], $random_password);
		}
	}	
	unset($row['user_name']);
	$post['post_author'] = $user_id;
	if(!($term = term_exists($row['ad_cat'], 'ad_cat')))
	$term = wp_insert_term($row['ad_cat'], 'ad_cat');
	$post_id = wp_insert_post($post);
	wp_set_object_terms( $post_id, array(intval($term['term_taxonomy_id'])), 'ad_cat');


файл allow-cyrillic-usernames
function acu_sanitize_user($username, $raw_username, $strict) {
	$username = wp_strip_all_tags( $raw_username );
	$username = remove_accents( $username );
	// Kill octets
	$username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
	$username = preg_replace( '/&.+?;/', '', $username ); // Kill entities

	// If strict, reduce to ASCII and Cyrillic characters for max portability.
	if ( $strict )
		$username = preg_replace( '|[^a-zа-я0-9 _.\-@]|iu', '', $username );

	$username = trim( $username );
	// Consolidate contiguous whitespace
	$username = preg_replace( '|\s+|', ' ', $username );

	return $username;
}
add_filter('sanitize_user', 'acu_sanitize_user', 10, 3);
  • Вопрос задан
  • 268 просмотров
Подписаться 1 Средний 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы