Skip to content
 

Еще один глюк Wordpress

В один совсем не прекрасный момент админка Wordpress при деактивизации плагина начала вдруг сбрасывать вместо требуемого - соседний. Работать с такой "особенностью", понятное дело, совершенно невозможно - пришлось разбираться.

Дело оказалось в том что в массив активных плагинов, хранящийся в базе в сериализованом виде, почему-то оказался с пропуском одного индекса - 11,12,14 :) А логика удаления рассчитана на обычный числовой индекс, а не на ассоциативный PHP-шный. Пришлось переделывать

Файл /wp-admin/includes/plugin.php, функция deactivate_plugins

было

if ( false !== $key ) {
$do_blog = true;
array_splice( $current, $key, 1 );
}

Надо array_splice( $current, $key, 1 ); заменить на unset( $current[ $key ] );

а для восстановления последовательности после цикла, перед

if ( $do_blog )
update_option('active_plugins', $current);

добавить нечто вроде

$i=0; $new_current=array();
foreach ( (array) $current as $cur )     $new_current[$i++]=$cur;
$current=$new_current;

И все станет хорошо :)

Upd. Бага присутствует и в свежем билде 3.1, посему занесена в трекер Вордпресса. Как говорится, будем посмотреть.

Также можно почитать:

  1. Кронштейны трапов

6 комментариев

  1. Ника (Набережные Челны) пишет:

    Отзыв: Thumb up 0 Thumb down 0

    Блог http://www.luaz967.ru С Рождеством !=)
    Merry Christmas and a Happy New Year!

  2. Алиса дизайнер (Набережные Челны) пишет:

    Отзыв: Thumb up 0 Thumb down 0

    Отличный блог !
    Вы разрешите разместить некоторые ваши статьи на моём блоге с указанием ссылки источника?

  3. Paradi (UA) пишет:

    Отзыв: Thumb up 0 Thumb down 0

    У вас в RSS картинки не показывает...

Написать отзыв