Домой WordPress WordPress: Проблемы и решения Редирект и сброс авторизации при удалении записи
11ответ(ов) в теме
koqpo1
не в сети 8 лет
На сайте с 20.01.2016
Участник
1
18:03

Здравствуйте, у меня на сайте, в личном кабинете организована стена пользователя. Каждая запись на стене, это запись/статья worpess.
Я добавил кнопку удаления записи. Выводится она кодом

<a href="" onclick="return confirm('Вы точно хотите удалить запись?')">Удалить запись

 
Пользователи имеют роль автора, все возможности настроены, то есть пользователи могут удалять свои записи.
Проблема в том, что при удалении записи происходит редирект на страницу авторизации wordpess(wp-admin) и соответственно сброс авторизации. Так происходит всегда. И для того, чтобы удалять свои записи пользователям нужно авторизовываться через wp admin и (!)обязательно(!) ставить галочку "запомнить меня". Может кто-нибудь помочь решить эту проблему или помочь хотя бы советом?

Если нужно, тестовый аккаунт на сайте. Стена находится во вкладке "Профиль"
логин - test00
пароль - 123456
ссылка на сайт -

Вы не можете просматривать опубликованные ссылки
0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
2
18:07

показывайте каким кодом после нажатия на ссылку удаления запись удаляется.

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
3
18:09

С каких это пор js удаляет записи?
Весь код давайте а не линк с js

0
koqpo1
не в сети 8 лет
На сайте с 20.01.2016
Участник
4
18:09

Не получилось сразу вставить код

<a  href="<?php echo get_delete_post_link( get_the_id() ); ?>" onclick="return confirm('Вы точно хотите удалить запись?')">Удалить запись</a>

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
5
18:16

Спокойно удалил запись. Выкинуло на главную страницу сайта. Но все так же залогинен

upd: проверял на своем сайте

0
koqpo1
не в сети 8 лет
На сайте с 20.01.2016
Участник
6
18:22

Выкидывает обычных пользователей, которые авторизовались обычным способом, а не через wp admin. В этом и проблема, хотя комментарии удаляются без редиректов и сбросов авторизации пусть они и на ajax.

Я и написал в теме

И для того, чтобы удалять свои записи пользователям нужно авторизовываться через wp admin и (!)обязательно(!) ставить галочку "запомнить меня".

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
7
18:34

На тестовом сайте выполнил все как вы и писали - авторизовался автором через wp-login.php удаляю свою запись. Перекидывает на главную! Но запись не удаляется
Нет у авторов доступа до wp-admin/post.php вот и не удаляет он.
Или вы авторам разрешаете вход в админку?

Со всеми отключенными плагинами, кроме реколл и на дефолтной вп теме - вы такой сценарий проверяли?

0
koqpo1
не в сети 8 лет
На сайте с 20.01.2016
Участник
8
18:42

Нет, не проверял. Изменял права и роли пользователей, вот какие права у роли Автора сейчас

Вы не можете просматривать опубликованные ссылки

А как тогда мне дать возможность пользователям удалять свои записи? Может как-то можно сделать возможность удалять записи без wp admin?

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
9
18:49

стандартно есть удаление - "редактировать запись" - "удалить публикацию"

Вы не можете просматривать опубликованные ссылки

Без всяких менеджеров ролей

0
koqpo1
не в сети 8 лет
На сайте с 20.01.2016
Участник
10
23:27

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

0
koqpo1
не в сети 8 лет
На сайте с 20.01.2016
Участник
11
01:20

Добавил в функции темы вот этот код:


function wp_delete_post_link($link = 'Delete This', $before = '', $after = '', $title="Move this item to the Trash", $cssClass="") {
    global $post;
    if ( $post->post_type == 'page' ) {
        if ( !current_user_can( 'edit_page' ) )
            return;
    } else {
        if ( !current_user_can( 'edit_post' ) )
            return;
    }
    $delLink = wp_nonce_url( site_url() . "/wp-admin/post.php?action=trash&post=" . $post->ID, 'trash-' . $post->post_type . '_' . $post->ID);
    $link = '<a class="' . $cssClass . '" href="' . $delLink . '" onclick="javascript:if(!confirm('Are you sure you want to move this item to trash?')) return false;" title="'.$title.'" />'.$link."</a>";
    return $before . $link . $after;
}

Теперь, когда пользователь впервые заходит на сайт и авторизуется как обычно, при удалении записи идет редирект на авторизацию wp admin, после чего нужно авторизоваться и уже (!)не нужно(!) ставить галочку "запомнить". После таких действий пользователь спокойно удаляет свои записи.
Одной проблемой меньше, так как не обязательно ставить галочку "запомнить". Но вопрос остается открытым, как избежать редиректа на авторизацию wp admin?

0
Тема закрыта. Публикация новых сообщений запрещена.