Поддержка Проблемы и решения Вам не разрешено делать вложения файлов к этой записи

  • Доброго дня!

    ВП последний.
    Для реализации размещения постов юзеров используется плагин User submitted posts.
    У всех юзеров роль Участник (присваивается при регистрации).
    Чтобы участники имели возможность заливать файлы, в function.php вставлен код:

    if (current_user_can(‘contributor’) && !current_user_can(‘upload_files’)) :
    add_action(‘admin_init’, ‘razreshit_uchasnikam_gruzit_faili’);
    endif;
    function razreshit_uchasnikam_gruzit_faili() {
    $uchasnik= get_role(‘contributor’);
    $uchasnik->add_cap(‘upload_files’);
    }

    Ещё позавчера всё работало как часы, а сегодня заметил, что при попытке юзера загрузить картинку в пост, выдаётся сообщение:
    «Вам не разрешено делать вложения файлов к этой записи».
    Это выдаёт ajax-actions.php. Если в нём отключить проверку if ( !current_user_can(‘upload_files’) ) , то ответят уже такие же проверки в class-wp-xmlrpc-server.php — Вам не разрешено загружать файлы.

    Причём, не только Участники, но и Авторы не могут добавлять файлы. Только Администраторы.

    Ничего вроде не трогал. Только установил вчера пару плагинов — гугл аналитикс + гугл сайтмап.
    Отключение плагинов на загрузку не влияет.

    Короче, это условие — if ( !current_user_can(‘upload_files’) ) {
    везде и всегда истинно, не смотря на указанный код в function.php

    Почему так происходит? Что случилось? Где копать?
    Огромное СПАСИБО за помощь!

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Модератор Yui

    (@fierevere)

    永子

    https://ru.wordpress.org/plugins/enable-contributor-uploads/

    плагин не хотите испробовать?

    Автор golgofa_rus

    (@golgofa_rus)

    Если только на совсем крайний случай. Честно говоря, я использую плагины в самом крайнем случае. Если существует возможность решить проблему кодом, то это лучший выход.
    Тем более, что многие плагины, которые вносят изменения в роли юзеров… как бы это сказать… если захочется вернуть всё как было, то удалить плагин будет не достаточно… придётся код писать для восстановления ролей.

    Если существует возможность решить проблему кодом, то это лучший выход.

    Плагинофобия лечится изучением матчасти.

    если захочется вернуть всё как было, то удалить плагин будет не достаточно… придётся код писать для восстановления ролей.

    Только если плагин пишет что-то в базу и при этом не имеет нормального механизма удаления.

    Весь код плагина выше: https://plugins.trac.wordpress.org/browser/enable-contributor-uploads/tags/1.1/functions.php

    Модератор Yui

    (@fierevere)

    永子

    плагин — тот же код, только поддерживаемый его автором и размещенный в официальном каталоге, в отличие от куска кода, который оригинально написал непонятно кто и разместил непонятно где, без какой-либо поддержки и гарантии работоспособности.
    https://plugins.svn.wordpress.org/enable-contributor-uploads/trunk/functions.php

    и код там почти тот же самый, даже проще

    Автор golgofa_rus

    (@golgofa_rus)

    Да нет нет, я не плагинофоб. Набросились))
    Я про то, что всё работало и вдруг поломалось. Хочется понять что, где и почему произошло.
    Сейчас попробую плагин.

    Автор golgofa_rus

    (@golgofa_rus)

    НЕ работает. Ни как плагин ни как код в function.php.
    Ответ прежний: Извините, Вам не разрешено делать вложения файлов к этой записи.

    Вопрос прежний — как найти причину?

    Вопрос прежний — как найти причину?

    Стоит воспользоваться инструкцией по поиску виновного в пп 3-6, оставив включенным только один плагин, указанный выше.

    Автор golgofa_rus

    (@golgofa_rus)

    Это всё понятно. Все плагины отключал, function.php и другие ставил от дистрибутива — результата ноль. Осталось только целиком саму тему отключить.
    Проблему то временно я решил, дописав проверку на Участника в ajax-actions.php.
    Но всё-таки причину найти надо.

    Видимо никто не обратил внимание на мои слова, что не только у Участника начались проблемы с загрузкой файлов. Такая же беда постигла Авторов. Хотя у них, эта опция есть по умолчанию и я нигде Авторов не трогал.

    И не сказал сразу с чего всё началось:
    Ещё вечером всё было нормально, а утром…
    Решил добавить пост, но плагин User submitted posts вдруг выдал «Вы не ввели капчу».
    Какая нафиг капча? Она отключена и её окно даже не отображается. Некуда и нечего вводить.
    Причём в самом плагине использовать и настроить можно только Google reCAPTCHA. Так вот она отключена и не на неё ругается плагин, а просто на какую-то CAPTCHA, которой никогда не было и нет. Ну отключил я проверку этой капчи, продолжил создавать пост и не получилось загрузить файл. Вот тут и начались поиски проблемы…

    Мне кажется, что-то слетело в ВП именно в настройках ролей и их прав. (Хотя каким боком тут капча вообще не ясно).

    Вопросы:
    1. В каких файлах находятся описания и функции/права ролей?
    2. В какую(ие) таблицу(ы) базы пишутся настройки прав ролей? (Не какому юзеру какая роль, а какой роли какие права).

    Спасибо!

    PS^ Роль юзера не меняется — я проверяю непосредственно перед отправкой файла. Он — contributor. Плагин, что Участникам разрешена загрузка файлов активирован.
    Ошибка — Загрузка запрещена. Значит что-то где-то отнимает у него права. И это «что-то» главнее function.php.

    Это всё понятно. Все плагины отключал, function.php и другие ставил от дистрибутива — результата ноль.

    Вы проверяли загрузку из админки под этим пользователем?

    Осталось только целиком саму тему отключить.

    Временно переключить на любую дефолтную.

    Автор golgofa_rus

    (@golgofa_rus)

    Вы проверяли загрузку из админки под этим пользователем?

    Вот же блин… Совсем башка не соображает уже, чтобы это сразу проверить :/

    Загрузка через админку у Участника РАБОТАЕТ!
    А через плагин User submitted posts — Вы не имеете права…
    Значит или сам плагин или его редактор Rich Text Editor…

    Но что могло случиться за ночь? Посмотрел — плагин последний раз обновлялся в марте. Я его не обновлял. Что же случилось?

    Я его переставлял заново — не работает. Откатить версию на предыдущую или есть вариант найти, что в нём гадит права?

    плагин User submitted posts

    Вообще-то последние обновление этого плагина было 23 марта и ченжлоге что-от про hook publish_post сказано.
    См https://wordpress.org/plugins/user-submitted-posts/#developers

    ЗЫ. Вернее 23 марта была новая версия, а когда она была одобрена и появилась в репо — это другой вопрос.

    Автор golgofa_rus

    (@golgofa_rus)

    У меня изначально стояла последняя актуальная версия. Я его установил неделю назад. Больше он не обновлялся. А фигня случилась позавчера.
    Ладно, пойду плагин ковырять…

    Автор golgofa_rus

    (@golgofa_rus)

    Пока не соображу. Вот здесь что-то не так:

    /* 
    	Shortcode: require login based on capability
    	Syntax: [usp_access cap="read" deny=""][/usp_access]
    	Can use {tag} to output <tag>
    	See @ http://codex.wordpress.org/Roles_and_Capabilities#Capabilities
    */
    if (!function_exists('usp_access')) :
    function usp_access($attr, $content = null) {
    	extract(shortcode_atts(array(
    		'cap'  => 'read',
    		'deny' => '',
    	), $attr));
    	
    	$deny = str_replace("{", "<", $deny);
    	$deny = str_replace("}", ">", $deny);
    	
    	$caps = array_map('trim', explode(',', $cap));
    	
    	foreach ($caps as $c) {
    		if (current_user_can($c) && !is_null($content) && !is_feed()) return do_shortcode($content);
    	}
    	return $deny;
    }
    add_shortcode('usp_access', 'usp_access');
    endif;
    • Ответ изменён 6 лет назад пользователем SeVlad. Причина: Оформляйте, пож, код как следует

    Пока не соображу. Вот здесь что-то не так:

    Пока не трогайте код плагина. Проверьте его на чистом ВП. Я почти уверен, что причина не там где Вы хотите её найти.

    И оформляйте код, пож.

    Автор golgofa_rus

    (@golgofa_rus)

    И оформляйте код, пож.

    да нажал отправить, а потом уже сообразил, что забыл. сорри

    О блин. И кнопку «изменить» только сейчас заметил) Совсем замучился с этим кодом за последние 2 дня. Башка не варит:/

    • Ответ изменён 6 лет назад пользователем golgofa_rus.
Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Тема «Вам не разрешено делать вложения файлов к этой записи» закрыта для новых ответов.