Wordpress одноразовый доступ к защищенной паролем странице
Я создаю страницу WordPress, которая защищена паролем. Он содержит форму, которую необходимо подать через 3 часа. После этого периода пользователь должен выйти из системы, независимо от того, заполнил он форму или нет. Он не должен быть в состоянии войти снова.
На данный момент мне удалось установить таймер, после которого содержимое страницы исчезает. Теперь мне нужен инструмент, который не позволяет конкретному пользователю войти в систему и повторно отправить форму. Пользователи не регистрируются на моем сайте. Я хочу отправить им по электронной почте пароль для защищенной страницы.
Я не могу просто изменить пароль после входа в систему, потому что на данный момент страница защищена одним паролем, который должен использовать каждый потенциальный пользователь.
Мне кажется, что самым простым способом избежать повторного входа в систему является выдача одноразовых паролей для этой конкретной страницы, поэтому по запросу каждый пользователь получает свой собственный OTP.
Я ищу плагин, который генерирует список OTP для конкретной страницы WP. Очень ценятся простые решения, так как я не опытный программист!
СПАСИБО ЗА ПОМОЩЬ. Все начинается где-то...
1 ответ
Примерно так (не проверено):
$token = $_GET[ 'token' ];
if( is_numeric( $token ) AND metadata_exists( 'post', get_the_ID(), 'token_' . $token ) ):
if( empty( get_metadata( 'post', get_the_ID(), 'token_' . $token, true ) ) )
update_metadata( 'post', get_the_ID(), 'token_' . $token, time() + ( HOUR_IN_SECONDS * 3 );
if( $stamp = get_metadata( 'post', get_the_ID(), 'token_' . $token, true ) < time() ):
echo 'Here goes your form';
echo 'You have ' . $stamp - time() . ' seconds.';
else:
echo 'nope';
delete_metadata( 'post', get_the_ID(), 'token_' . $token )
endif;
else:
echo 'nope';
endif;
Так что вам просто нужно создать пустое поле postmeta, как token_98751328475
и поделиться URL как example.com/myformpage?token=98751328475
,
Я бы, вероятно, создал страницу подтверждения для запуска таймера, чтобы он не запускался при первом вызове.