Здравствуйте, у меня на сайте, в личном кабинете организована стена пользователя. Каждая запись на стене, это запись/статья worpess.
Я добавил кнопку удаления записи. Выводится она кодом
<a href="" onclick="return confirm('Вы точно хотите удалить запись?')">Удалить запись
Пользователи имеют роль автора, все возможности настроены, то есть пользователи могут удалять свои записи.
Проблема в том, что при удалении записи происходит редирект на страницу авторизации wordpess(wp-admin) и соответственно сброс авторизации. Так происходит всегда. И для того, чтобы удалять свои записи пользователям нужно авторизовываться через wp admin и (!)обязательно(!) ставить галочку "запомнить меня". Может кто-нибудь помочь решить эту проблему или помочь хотя бы советом?
Если нужно, тестовый аккаунт на сайте. Стена находится во вкладке "Профиль"
логин - test00
пароль - 123456
ссылка на сайт -
Выкидывает обычных пользователей, которые авторизовались обычным способом, а не через wp admin. В этом и проблема, хотя комментарии удаляются без редиректов и сбросов авторизации пусть они и на ajax.
Я и написал в теме
И для того, чтобы удалять свои записи пользователям нужно авторизовываться через wp admin и (!)обязательно(!) ставить галочку "запомнить меня".
На тестовом сайте выполнил все как вы и писали - авторизовался автором через wp-login.php удаляю свою запись. Перекидывает на главную! Но запись не удаляется
Нет у авторов доступа до wp-admin/post.php вот и не удаляет он.
Или вы авторам разрешаете вход в админку?
Со всеми отключенными плагинами, кроме реколл и на дефолтной вп теме - вы такой сценарий проверяли?
Впервые вижу, что кнопка удаления стандартно есть прямо на странице записи,ведь даже кнопка "редактирования" перенаправляет в админ панель.
Сейчас пробовал на тестовом сайте, сначала вп криво вставал, потом криво встал вп реколл. В итоге даже публиковать записи через вп реколл нельзя было. Хостинг очень не качественный для теста выбрал, потом как-нибудь еще попробую. А пока буду на основном пытаться.
Добавил в функции темы вот этот код:
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?