Intereting Posts
Импорт сообщений в пользовательский тип сообщения на новый веб-сайт Добавление содержимого страниц для запуска через пользовательское меню wp_get_attachment_caption, чтобы вырезать надпись или alt Какова наилучшая практика для проверки постоянных ссылок? Пользовательская таксономия и проблема tax_query? Можно ли установить другой интерфейс и бэкэнд-язык? Импортируйте очень старую версию WordPress в новый WordPress Добавить / удалить действие при переключении jQuery WP Super Cache не может найти файл кэша только для главной страницы Как вернуть несколько аргументов из функции обратного вызова AJAX Почему в шаблонах содержится так много пар тэгов PHP? Форма представления сообщения переднего конца с полями повторяющегося типа Какой файл мне нужно для редактирования страницы «Все сообщения» в области администратора? Ошибка создания подключения к базе данных, но учетные данные в порядке. Почасовое расписание WP, мне нужно как минимум 1 гость?

Хранение пароля (functions.php)

Я создал форму пароля, в которой посетители могут получить доступ к любой защищенной паролем почте с соответствующим паролем. В основном вы вводите уникальный пароль, и вы перенаправляетесь на сообщение, которое защищено заданным паролем. Все работает нормально (с помощью s_ha_dum), кроме одного – вам нужно вводить пароль дважды.

functions.php:

function doPasswordStuff(){ if(isset($_POST['homepagepassword'])){ global $wpdb; $post_password = trim($_POST['passwordfield']); $post_id = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_password = %s", $post_password) ); if (!empty($post_id)) { wp_redirect(get_permalink($post_id)); exit(); } else { // oh dear, there isnt a post with this 'password', put a redirect to a fallback here wp_redirect(xxx'); exit(); } wp_reset_query(); } } add_action('template_redirect','doPasswordStuff'); 

Вы знаете, как это сделать, не вводя пароль дважды?

Solutions Collecting From Web of "Хранение пароля (functions.php)"

Вот вам:

 function dopasswordstuff(){ if(isset($_POST['homepagepassword'])) { global $wpdb; $post_password = trim($_POST['passwordfield']); $post_id = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_password = %s", $post_password) ); if (!empty($post_id)) { if ( empty( $wp_hasher ) ) { require_once( ABSPATH . 'wp-includes/class-phpass.php' ); // By default, use the portable hash from phpass $wp_hasher = new PasswordHash(8, true); } // 10 days setcookie( 'wp-postpass_' . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $post_password ) ), time() + 864000, COOKIEPATH ); wp_redirect(get_permalink($post_id)); } exit; } } add_action('template_redirect','dopasswordstuff'); 

Я пробрал кое-что из системы входа в систему Core, и я считаю, что у меня это работает. Хитрость заключается в том, чтобы установить файл cookie, который требует добавления этой части:

 if ( empty( $wp_hasher ) ) { require_once( ABSPATH . 'wp-includes/class-phpass.php' ); // By default, use the portable hash from phpass $wp_hasher = new PasswordHash(8, true); } // 10 days setcookie( 'wp-postpass_' . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $post_password ) ), time() + 864000, COOKIEPATH );