2015-02-02 2 views
1

Я пытаюсь создать защищенные паролем сообщения в Wordpress, используя следующий код в моих functions.php. Это дает мне «Страница не найдена» и перенаправляет URL-адрес «wp-pass.php». Любые идеи о том, как обойти его, будут высоко оценены.Wordpress защищенные сообщения, дающие «Страница не найдена» и «wp-pass.php» url

<?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"> 
    ' . __("") . ' 
    <label for="' . $label . '">' . __("Password Protected") . ' </label><input name="post_password" id="' . $label . '" type="password" size="20" /><input type="submit" name="Submit" value="' . esc_attr__("Submit") . '" /> 
    </form> 
    '; 
    return $o; 
} 
?> 

ответ

5

Правильный способ настроить защищенный паролем страница

<?php 
    function my_password_form() { 
     global $post; 
     $label = 'pwbox-'.(empty($post->ID) ? rand() : $post->ID); 
     $o = '<form action="' . esc_url(site_url('wp-login.php?action=postpass', 'login_post')) . '" 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'); 
    ?> 

Источник: http://codex.wordpress.org/Using_Password_Protection#Customize_the_Protected_Text

+0

Thanks @Adnan! Работал отлично, не уверен, где я ошибся – Rob

+0

@Rob form action url был некорректным в вашем коде – Adnan

1

Вы написали неправильно url в действии формы, которая get_option('siteurl') . '/wp-pass.php. Таким образом, вы перенаправляетесь на wp-pass.php после отправки пароля. Таким образом, ваш код должен быть:

function custom_password_form() { 
    global $post; 
    $label = 'pwbox-'.(empty($post->ID) ? rand() : $post->ID); 
    $o = '<form action="' . esc_url(site_url('wp-login.php?action=postpass', 'login_post')) . '" 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', 'custom_password_form');