Intereting Posts
wp_enqueue_scrpts кажется не вызванным Сокращение срока для каждого Архивные шаблоны на основе таксономий Как этот многократный цикл имеет разбиение на страницы, как описано? Новый метод отключения wpautop после WP 4.3? Почему некоторые сообщения, перечисленные в закладке «Mine», и те же сообщения, которые были указаны в списке «Опубликована» в блоке? Простые плагины для публикации информации о новых блогах? Я поставил свой блог на подстраницу, как мне получить заголовок страницы? Получить все пользовательские типы сообщений WordPress Query Posts From Category Post на статической странице Могу ли я запрашивать пользовательские метаданные через WP_Query Как эхо пользовательские стили в формате css? Как добавить группу к запросу, используемому медиа-библиотекой? Как я могу запустить этот код один раз, чтобы мой опубликованный заголовок не изменялся при публикации / обновлении? Аутентификация из подпапки non-wp cookie WordPress

Добавить сообщение об ошибке на странице с защитой паролем

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

Как я могу это сделать?

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

Мои functions.php

 add_filter( 'the_password_form', 'custom_password_form' ); function custom_password_form() { global $post; $label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID ); $o = '<form class="protected-post-form" action="' . get_option('siteurl') . '/wp-pass.php" method="post">' . '<p class="glossar-form-p">Alle weiteren Glossarbeiträge sind durch ein Passwort geschützt. </p>' . ' <label for="' . $label . '">' . ' </label><input name="post_password" id="' . $label . '" type="password" size="20" /> <input type="submit" name="Submit" value="' . esc_attr__( "Login" ) . '" /> </form> '; return $o; } 

Solutions Collecting From Web of "Добавить сообщение об ошибке на странице с защитой паролем"

Последний введенный пароль сохраняется как безопасный хэш в 'wp-postpass_' . COOKIEHASH cookie с именем 'wp-postpass_' . COOKIEHASH 'wp-postpass_' . COOKIEHASH .

Когда вызывается форму пароля, этот файл cookie уже проверен WordPress. Поэтому вам просто нужно проверить, существует ли этот файл cookie: если это так и отображается форма пароля, пароль был неправильным.

 add_filter( 'the_password_form', 'wpse_71284_custom_post_password_msg' ); /** * Add a message to the password form. * * @wp-hook the_password_form * @param string $form * @return string */ function wpse_71284_custom_post_password_msg( $form ) { // No cookie, the user has not sent anything until now. if ( ! isset ( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ) ) return $form; // Translate and escape. $msg = esc_html__( 'Sorry, your password is wrong.', 'your_text_domain' ); // We have a cookie, but it doesn't match the password. $msg = "<p class='custom-password-message'>$msg</p>"; return $msg . $form; } 

Может быть, действительно очень поздно ответить. Что-то вам нужно сделать следующее. Поскольку по умолчанию нет возможности проверить, вам нужно выполнить несколько шагов. Здесь я буду использовать переменную сеанса для проверки соответствия сгенерированных файлов cookie. сначала нужно начать сеанс.

 add_action('init', 'myStartSession', 1); add_action('wp_logout', 'myEndSession'); add_action('wp_login', 'myEndSession'); function myStartSession() { if(!session_id()) { session_start(); } } function myEndSession() { session_destroy (); } 

Затем используйте следующий код, где вы хотите показать сообщение об ошибке.

 if ( post_password_required() ) { $session_id = 'wp-postpass_' . get_the_ID(); //onload $current_cookie = wp_unslash($_COOKIE[ 'wp-postpass_' . COOKIEHASH ]); //get old cookie $old_cookie = isset( $_SESSION[ $session_id ] ) ? $_SESSION[ $session_id ] : ''; //set new session $_SESSION[ $session_id ] = $current_cookie; if ( $current_cookie != $old_cookie && !empty( $old_cookie ) ){ error_notification('<b>Error!</b> Authentication failed!'); } } 

Это оно!!