WordPress 2.5 куча багов

Допустим вы решили привлечь к созданию вашего болга много пользователей, так чтобы любой мог зарегистрироваться и писать посты а почему бы и нет концепция web 2.0 на сегодняшний день рулит :) .
Для этого в настройках изменяем роль нового пользователя по умолчанию стоит подписчик, а мы ставим автор. Но тут возникает куча проблем автор может беспрепятственно публиковать свои сообщения без предварительной модерации, изменять дату и время, ну и вообще ему доступны практически все чек боксы.
Кроме того в процессе исправления натолкнулся на явные баги. Итак будем оперировать файл

/wp-admin/edit-form-advanced.php

Баг 1 наверно мало кто заметил, но у всех пользователей пропала маленькая ссылочка «Удалить запись» под кнопками Сохранить Опубликовать смотрим чего там происходитнаходим строку

if ( ( ‘edit’ == $action) && current_user_can(‘delete_post’, $post_ID) )

функция current_user_can проверяет имеет ли право текущий пользователь удалить данный пост, однако константы delete_post нет даже в офицальной документации естественно этот блок не сработает поэтому меняем строку условаия на

if ( ( ‘edit’ == $action) && (current_user_can(‘edit_posts’, $post_ID) || current_user_can(‘edit_pages’, $post_ID)))

теперь очень удобная ссылочка появится для авторов при редактировании поста и для редакторов и админов при редактировании постов и страниц.

Давайте посмотрим какие вообще права доступны автору

  • upload_files загружать файлы
  • edit_posts редактировать свои сообщения
  • publish_posts создавать новые сообщения
  • read читать блог

Теперь разбираемся с кнопками Сохранить, Опубликовать, Отправить на утверждение

<?php if ( current_user_can('publish_posts') ) : ?>
	<input name="publish" type="submit" class="button" id="publish" tabindex="5"
accesskey="p" value="<?php _e('Publish') ?>" />
<?php else : ?>
	<input name="publish" type="submit" class="button" id="publish" tabindex="5"
accesskey="p" value="<?php _e('Submit for Review') ?>" />
<?php endif; ?>

условие if ( current_user_can(‘publish_posts’) ) проверяет имеет ли право текущий пользователь публиковать посты и рисует ему кнопку Опубликовать, в противном случае выводит кнопку Отправить на утверждение , но этого никогда не может случится потому, что правом publish_posts обладает самая низшая роль – тоесть автор, ну естественно кроме подписчика то вообще в админку попасть не может. Значит исправляем это недоразуменее.
вместо publish_posts вставляем edit_others_posts это право доступно редактору и выше.
И туже надо исправить чекбокс Статус публикации начинается он такими строками :

<select name='post_status' tabindex='4'>
<?php if ( current_user_can('publish_posts') ) : // Contributors only get "Unpublished" and

тут тоже самое меняем publish_posts на edit_others_posts

это еще не все продолжение следует

Рубрика:  июня 20, 2008.
/ » » »

Похожие объявления:

RSS2 Лента комментариев

Leave a Reply

Разработки

Выполняем мелкий и крупный ремонт Вашего блога по разумным ценам.

Ссылки

Счетчики