[Инфо] Плагины не работающие в 3.5

Тема в разделе "Wordpress", создана пользователем ReBeL, 12 дек 2012.

Статус темы:
Закрыта.
Модераторы: DzSoft, Sorcus
  1. ReBeL

    ReBeL Злобный старикашка

    Регистр.:
    3 май 2006
    Сообщения:
    1.561
    Симпатии:
    849
    Тема создана для обмена информацией о том, какие плагины ( с обязательным указанием версии) не работают в WordPress версии 3.5

    Начнем с плагина WP SEO Ninja Version 1.1.1 - выдает после обновления ВП ошибку :
    Код:
    Warning: Missing argument 2 for wpdb::prepare(), called in xxx/wp-content/plugins/wpseoninja/functions.widgets.php on line 247 and defined in xxx/wp-includes/wp-db.php on line 990
    PS Не забываем о возможности редактировать собственные сообщения. Не нужно по поводу каждой мелочи создавать новый пост!
     
  2. xbreaker

    xbreaker Вверх ногами

    Регистр.:
    15 авг 2007
    Сообщения:
    245
    Симпатии:
    52
    Да простит меня уважаемый Xp10r3r, но данный случай с использованием wpdb->prepare() порушит очень много плагинов, поэтому было бы правильно привести хотфикс данной функции, чтобы не ждать обновления всех плагинов.

    Все дело в том, что в WP <3.5 функция wpdb->prepare() принимала всего один аргумент в качестве переменной и выглядела примерно так:
    PHP:
    $wpdb->prepare"SELECT * FROM table WHERE id = $id);
    Начиная с версии 3.5, данная запись считается неправильной и вызывает ошибку. Теперь обязателен 2 аргумент, их количество не ограничено - записи теперь будут выглядить так:
    PHP:
    $wpdb->prepare"SELECT * FROM table WHERE id = %d"$id );
    $wpdb->prepare"SELECT * FROM table WHERE ID = %d AND name = %s"$id$name );
    Это сделано для повышения безопасности - мы явным образом можем указать тип переменной (%d, %s, %f). Остались варианты, когда параметр отсутствует вообще, например:
    PHP:
    $wpdb->prepare"SELECT COUNT(*) FROM table" );
    В этом случае нужно отказаться от wpdb->prepare вообще, так как в данном запросе возможность инъекции исключена.
     
Статус темы:
Закрыта.