WordPress 3.5 Изменен User.php Какой плагин Breaks, может ли эта функция быть проблемой? Это можно исправить?
Плагин обеспечивает вход в многопользовательскую сеть WordPress. Этот плагин теперь не работает под WP 3.5, потому что файл user.php был изменен. Старые строки в /wp-includes/user.php могут быть добавлены обратно, и плагин будет работать. Очевидно, что это не долгосрочное решение.
Это старый код из user.php
if ( empty( $user ) )
$user = wp_get_current_user();
else
$user = new WP_User( $user );
if ( ! isset( $user->ID ) )
return false;
Это новый код от 3.5
if ( empty( $user ) )
$user = get_current_user_id();
if ( ! $user = get_userdata( $user ) )
return false;
Я новичок, пытающийся выучить php, и поэтому я не уверен во всех смыслах. Тем не менее, я думаю, что это код в плагине, вызывающий проблему:
function get_userdata ($ user_id) {global $ wpdb;
if ( ! is_numeric( $user_id ) )
return false;
$user_id = absint( $user_id );
if ( ! $user_id )
return false;
$user = wp_cache_get( $user_id, 'users' ); //check to see if the cache object already has the user
if ( $user )
{
return $user; //it was in the cache
}
$user = new StdClass ();
global $XF;
XF_User_Data::fillUserData($XF->visitor, $user, $user_id);
update_user_caches($user);
return $user;
}
Новый StdClass может быть закомментирован и ошибка удалена, но тогда никто не сможет войти.
Как я мог переписать эту функцию, чтобы не вызвать ошибку?
* Неустранимая ошибка: вызов неопределенного метода stdClass::has_prop() /wp-includes/user.php*
Разработчик плагина находится в отпуске и не обновлялся. Он ждет каких-то других изменений, однако это нужно исправить.
Есть предложения по исправлению кода? Я смотрю не в том месте? Нужны ли другие детали, прежде чем кто-то сможет помочь?
2 ответа
Даже если вы опытный программист PHP, изменение ядра WP или любого скрипта плагина действительно плохая идея. На мой взгляд, вам следует перейти на предыдущую версию и дождаться обновления плагина. Проверьте эту ссылку, чтобы сделать это легко. На самом деле, многие плагины имели проблемы с версией 3.5, в том числе популярный CKEditor, но они обновляются, и в этом случае ожидание кажется лучшим вариантом. Убедитесь, что все плагины совместимы с 3.5, прежде чем пробовать другое обновление.
Если вы опубликуете, какой плагин вы используете, и ссылку для его загрузки, я посмотрю на него и выясню, в чем проблема.