Всем привет! На сайте под управлением
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-usernamesfunction 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);