_Password_Form函数未协同工作

时间:2013-10-26 作者:gurung

我需要在我的wp网站上有两个功能。首先,我需要更改密码保护页面的文本,所以我直接从this article on wordpress codex.它工作得很漂亮。

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">
    \' . __( "<p>Please get in touch with us on ######## and get a password.</p>" ) . \'
    <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\' );
其次,如果有人在受密码保护的页面中输入了错误的密码,我需要显示一条错误消息,所以我选择了@toscho提供的另一个解决方案from here at wpse 它也很有魅力。

//ERROR MESSAGE FOR PASSWORD PROTECTED POSTS/PAGES
add_filter( \'the_password_form\', \'wpse_71284_custom_post_password_msg\' );
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;

    // We have a cookie, but it doesn’t match the password.
    $msg = \'<p class="custom-password-message">WRONG PASSWORD.</p>\';
    return $msg . $form;
}
问题是,由于某种原因,它们无法协同工作。具体来说,无论第二个代码是否被注释掉,codex的第一个代码都可以工作。但与错误消息相关的第二个代码块在第一个代码块存在的情况下根本不起作用。不用说,这两个代码在函数中都位于彼此之上。php。我正在使用最新的wp-3.7,并在live server中对此进行测试。我错过了什么,请指点我。提前谢谢。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

你必须控制执行的顺序。为此,请使用第三个参数add_filter(), 优先级。A.higher priority 等于稍后执行。

add_filter( \'the_password_form\', \'my_password_form\', 9 );
add_filter( \'the_password_form\', \'wpse_71284_custom_post_password_msg\', 10 );

结束

相关推荐

unit testing admin password

我正在为我的插件编写单元测试,我需要一个登录的用户来测试,但我在任何地方都找不到管理员密码。有人知道默认的管理员密码是什么吗?我正在扩展WP_UnitTestCase 并从https://unit-tests.svn.wordpress.org/trunk.我目前的代码:<?php require_once(\'myPlugin.php\'); class MyPluginTest extends WP_UnitTestCase{ function