Требование входа в систему для плагина на основе шорткода

Разработка плагина для личного использования, который добавляет управляемый данными контент на страницы WordPress с помощью шорткодов. В текущей реализации шорткод php проверяет, авторизован ли посетитель (в частности, если это я), отображает управляемый данными контент, если он авторизован, и отображает сообщение, если нет.

Вместо сообщения я хотел бы сделать auth_redirect. Но к тому времени, когда мой шорткод будет проанализирован, WordPress уже начал отправлять контент клиенту, поэтому перенаправление не происходит.

Есть ли (простой) способ получить поведение auth_redirect из шорткодов? Например, могу ли я каким-то образом передать URL-адрес возврата на страницу wp-login? Или сделать проверку авторизации раньше при обработке страницы?


person florismk    schedule 29.12.2019    source источник
comment
Пусть ваш код возвращает тег <script> с перенаправлением window.location, если текущий пользователь не авторизован для просмотра данных.   -  person cabrerahector    schedule 30.12.2019
comment
вы можете протестировать контент с помощью has_shortcode.   -  person Kaperto    schedule 30.12.2019
comment
@Kaperto, это может быть частью решения моего вопроса, но ваш ответ настолько лаконичен, что я понятия не имею, с чего начать реализацию.   -  person florismk    schedule 30.12.2019
comment
@cabrerahector, это может быть способ отправить моего пользователя куда-то еще, но это перенаправление на стороне клиента, которое я бы предпочел не использовать. Кроме того, это не относится к возврату на исходную страницу после входа в систему.   -  person florismk    schedule 30.12.2019


Ответы (1)


Это намного проще, чем я думал: я могу просто перейти на страницу входа и передать URL-адрес текущей страницы в качестве параметра:

esc_url(wp_login_url( get_permalink()))

Гиперссылка на это отправляет меня на страницу входа в wp, а параметр get_permalink гарантирует, что я вернусь на вызывающую страницу после входа в систему.

person florismk    schedule 30.12.2019