Intereting Posts
больше таблиц, созданных при создании нового сайта Разница между вызовом wp_enqueue_scripts для загрузки скриптов и стилей в пользовательскую тему Лучшая альтернатива таблице WP List Как одна строка в блоге удаляет мой сервер? Какая тема хороша для публикации кода? скрипт enqueue на странице архива типа персонализированного сообщения IP-адреса для блокировки, чтобы остановить автоматическое обновление WP? Используйте PHP в таблице стилей, чтобы указать фоновое изображение на основе идентификатора категории Создание аудио-плейлиста с внешними аудиофайлами? customize_preview_init: прослушивание любых изменений из области предварительного просмотра настроек Расположение файла создания таблиц mySQL по умолчанию? Как узнать, какие функции назначены действиям? Не могут ли пользовательские таксономии иметь одинаковые термины (слизняки) в качестве категорий? Должны ли мы использовать плагины, которые недоступны на официальном сайте WordPress? medoo framework в плагине WP

Удаление «публичной» регистрации пользователя без полного его отключения?

Мне нужно знать, есть ли способ удалить кнопку регистрации на странице входа в WordPress вместе со ссылкой на registration form … без беспорядка с основными файлами … так что я не получаю просто «никого» (или спамеры) создание аккаунтов!

Тем не менее, мне все еще нужна функция user registration .

У меня есть «частный» загрузчик фотографий, который заблокирован для всех, у кого нет учетной записи на сайте … но единственный способ (единственный способ, которым я этого хочу) – регистрировать новых пользователей регистрационную информацию для пользовательского пользователя, который разблокирует регистрационную форму. Поэтому ограничивать пользователей только «приглашениями».

ПРИМЕЧАНИЕ . Я уже работаю в плагине, поэтому я не могу просто использовать другой плагин, поскольку это плохая практика. Это должно быть то, что я могу добавить в файл functions.php или что-то в этом роде.


ОБНОВИТЬ:

Основываясь на ответе @Stephen Harris, я изучил использование функции wp_create_user … Тем не менее, я немного запутался в том, как мне следует добавить его в существующую «настроенную» регистрационную форму (это будет быть полностью отделен от формы register по умолчанию).

Вот мой текущий код формы:

 <!-- Registration form --> <h1 class="register-header">Register a new user</h1> <?php $register = $_GET['register']; if($register == true) { echo '<p class="register-success">Check your email for the password! Logout and use your new username & password.</p>'; }?> <a class="logout" href="<?php echo wp_logout_url( get_permalink() ); ?>">Logout</a> <form method="post" id="register_form" class="wp-user-form" action="echo site_url('wp-login.php?action=register', 'login_post') ?>"> <!-- Username --> <p> <input type="text" name="user_login" id="user_login" class="input" placeholder="unique username" /> </p> <!-- Email to send p/w to --> <p> <input type="email" name="user_email" id="user_email" class="input" placeholder="email address" /> </p> <p class="small-text">You will receive an email with a generated password<br />(which you can change in your "user settings")</p> <?php do_action('register_form'); ?> <button name="wp-submit" id="wp-submit" class="btn">Register new user</button> <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>?register=true" /> <input type="hidden" name="user-cookie" value="1" /> </form><!-- end registration-form --> 

Это все работает, когда «кто-то может зарегистрироваться» включен … но как мне заставить его работать, когда я его отключу?

Solutions Collecting From Web of "Удаление «публичной» регистрации пользователя без полного его отключения?"

В разделе «Настройки»> «Общие» есть параметр «Членство». Отключив «Любой, кто может зарегистрироваться», страница с официальной регистрацией будет удалена, а также кнопка «зарегистрироваться».

Однако API будет по-прежнему использоваться (например, wp_create_user() .)

На стороне примечания, вы упоминаете

ПРИМЕЧАНИЕ. Я уже работаю в плагине, поэтому я не могу просто использовать другой плагин, поскольку это плохая практика

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

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

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

 541 if ( get_option( 'users_can_register' ) ) : 542 $registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register' ) ); 

Если вы можете получить этот вызов get_option() чтобы вернуть false ссылка исчезнет. get_option() предоставляет крючок, который позволит это.

 45 $pre = apply_filters( 'pre_option_' . $option, false ); 46 if ( false !== $pre ) 47 return $pre; 

https://core.trac.wordpress.org/browser/tags/3.9.1/src/wp-includes/option.php#L45

Ну, вроде. Возвращение false из этого крючка не будет работать, но будет возвращено значение null .

И действие login_init позволит вам ограничить эффект одной страницей. Так…

 add_action( 'login_init', function() { add_filter('pre_option_users_can_register','__return_null'); } ); 

Ссылка: http://codex.wordpress.org/Function_Reference/_return_null

Проведя довольно много исследований и немного прочитав (и перечитав), я, наконец, смог выяснить, как заставить wp_create_user работать!

Ниже вы увидите код, который я использую, чтобы это произошло:

 <!-- Registration form --> <h1 class="register-header">Register a new user</h1> <?php $register = $_GET['register']; if($register == true) { echo '<p class="register-success">Check your email for the password! Logout and use your new username & password.</p>'; }?> <a class="logout" href="<?php echo wp_logout_url( get_permalink() ); ?>">Logout</a> <form method="post" id="register_form" class="wp-user-form" action="<?php echo $_SERVER['REQUEST_URI'] ?>"> <!-- Username --> <p> <input type="text" name="user_login" id="user_login" class="input" placeholder="unique username" /> </p> <!-- Email to send p/w to --> <p> <input type="email" name="user_email" id="user_email" class="input" placeholder="email address" /> </p> <p class="small-text">You will receive an email with a generated password<br />(which you can change in your "user settings")</p> <button name="wp-submit" id="wp-submit" class="btn">Register new user</button> </form> <?php $username = $_POST['user_login']; $email = $_POST['user_email']; if (( $username != '' ) && ( $email != '' )){ $user_id = username_exists( $username ); $user_email = email_exists( $email ); if (( !$user_id ) && ( !$user_email )) { // Generate the password and create the user $password = wp_generate_password( 12, false ); $user_id = wp_create_user( $username, $password, $email ); // Update user wp_update_user( array( 'ID' => $user_id )); // Set user role $user = new WP_User( $user_id ); $user->set_role( 'subscriber' ); // Email user their password wp_mail( $email, 'Your new password!', 'Here\'s your new password: ' . $password ); } else { $password = __( 'User already exists.' ); } }?> <!-- end registration-form --> 

Это позволяет создать нового пользователя! Но я должен работать над обработкой ошибок.

Если у кого-то есть советы или исправления, как я это делаю, дайте мне знать … Я все еще пытаюсь обойти мои мысли о том, как это работает. 😉