Я только что обновил свой сайт до новой версии WordPress 3.9.2. Я заметил, что одна из моих страниц работает не так, как обычно. Эта страница защищена паролем, и я внес изменения в ее внешний вид. Когда я обновился, он больше не работает. На странице, защищенной паролем, у меня есть этот код:
<?php
echo "<script type='text/javascript'>\nwindow.location = 'http://www.google.com'</script>";
?>
Цель этого — перенаправить на другую страницу. И они идут рука об руку с этим кодом ниже.
Вот мой старый код:
<?php
function my_password_form() {
global $post;
$label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID );
$o = '<form action="' . get_option('siteurl') . '/wp-pass.php" method="post">
' . __( "To view this protected post, enter the password below:" ) . '
<label for="' . $label . '">' . __( "Password:" ) . ' </label><input name="post_password" id="' . $label . '" type="password" size="20" maxlength="20" /><input type="submit" name="Submit" value="' . esc_attr__( "Submit" ) . '" />
</form>
';
return $o;
}
add_filter( 'the_password_form', 'my_password_form' );
?>
Перед обновлением после ввода пароля он перенаправляет меня на другую страницу, как я и хотел, чтобы он работал. Но обратите внимание на атрибут действия формы. В WP 3.9.2 wp-pass.php больше не существует, поэтому я искал другой код. Я видел эту строку:
action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '"
Но после ввода пароля он перенаправляет меня на wp-логин, что не то, что я хотел. Мне нужна помощь с этим, который работает так же, как старый код, который я использую. Я не собираюсь понижать мой WP или устанавливать любой плагин. Я просто хочу ценность action=""
изменилось. Спасибо!
Я уже нашел ответ. Возможно, мои файлы были несовместимы, поэтому он не работал, но вот полный код.
<?php
function my_password_form() {
global $post;
$label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID );
$o = '<form action="' . get_option('siteurl') . '/wp-login.php?action=postpass" method="post">
' . __( "To view this protected post, enter the password below:" ) . '
<label for="' . $label . '">' . __( "Password:" ) . ' </label><input name="post_password" id="' . $label . '" type="password" size="20" maxlength="20" /><input type="submit" name="Submit" value="' . esc_attr__( "Submit" ) . '" />
</form>
';
return $o;
}
add_filter( 'the_password_form', 'my_password_form' );
?>
НОТА : Я использую WordPress 3.9.2
У меня была такая же проблема, и я нашел решение
1) Установите личную страницу с паролем
2) Вставьте эту форму на другой странице (типовая постпрессовая форма WordPress):
<form action="https://exemple.com/wp-login.php?action=postpass" class="post-password-form" method="post" id="go-pro-espace">
<input name="post_password" id="exemple" type="password" size="20" /><br />
<input type="submit" value="submit">
</form>
3) Измените ваш файл /wp-login.php (корневой каталог, в данный момент это строка 460):
from:
wp_safe_redirect( wp_get_referer() );
to:
wp_safe_redirect( "https://exemple.fr/your-protected-page" );
Посмотрите на ответ: WordPress защищенная страница, форма POST на другой странице