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,

Я бы, вероятно, создал страницу подтверждения для запуска таймера, чтобы он не запускался при первом вызове.

Другие вопросы по тегам