Лучший способ - просто использовать встроенную систему регистрации. Есть ли какая-то причина, которая не работает для вас?
Если не считать этого, вот быстрый и грязный подход ...
Чтобы отправить почту пользователю, просто поместите на страницу следующий код PHP:
mail($_GET['user_email_address'], 'Access to site', 'To access the site please use ' . get_bloginfo('url') . '/foo.php?access=1');
Первый параметр предполагает, что страница, которая вызывает это, имеет текстовое поле с именем 'user_email_address'. Тема и содержание письма следуют; Вы можете изменить их так, чтобы они отражали то, что вы действительно хотите.
Затем на странице, к которой вы хотите ограничить доступ, поместите следующий код вверху файла:
if (!isset($_GET['access']))
wp_redirect(get_option('siteurl') . '/wp-login.php?action=register');
Это перенаправляет любого, у кого нет доступа к параметру get. Эта система имеет два основных недостатка:
- Вы можете легко скопировать / вставить и поделиться этим URL, и любой сможет обойти электронную почту
- если вы попытаетесь вернуться на страницу позже, вы не сможете перейти на нее без параметра get
Если вы предоставите более подробную информацию о том, почему встроенная система регистрации не работает, я мог бы помочь вам лучше.
* 1023 Кевин *