“无效的用户名”WooCommerce错误消息来自何处?

时间:2018-05-23 11:49:10

标签: wordpress woocommerce

我需要修改WooCommerce错误消息的文本(出于安全原因),但似乎无法找到此特定消息的实际来源。

我在example.com/shop/my-account/页面上(也可能是example.com/my-account/),故意输入错误的用户名和密码进行测试。

相关的HTML部分看起来完全像这样:

<ul class="woocommerce-error" role="alert">
    <li>
        <strong>ERROR</strong>
        : Invalid username.
        <a href="http://example.com/shop/my-account/lost-password/">Lost your password?</a>
    </li>
</ul>

我需要将邮件的Invalid username部分更改为其他内容。

所以,我搜索了那个确切的字符串,但只能查找Invalid username or email. 的实例,这显然与我正在尝试修改的错误消息不匹配。

然后我检查了整个HTML部分的生成位置,发现它是在plugins\woocommerce\templates\notices\error.php中生成的。

以下是相关部分:

<ul class="woocommerce-error" role="alert">
    <?php foreach ( $messages as $message ) : ?>
        <li><?php echo wp_kses_post( $message ); ?></li>
    <?php endforeach; ?>
</ul>

因此,该错误消息来自$messages数组。

但我在哪里可以找到有问题的实际消息?

(以便我可以修改它)

为什么无法找到完全匹配(Invalid username)?

我当然试图搜索$messages,但没有任何相关内容可以找到。那么,那个特定的错误信息究竟来自哪里呢?即使在整个wp-content文件夹中搜索也不会导致任何问题。

2 个答案:

答案 0 :(得分:1)

我相信,有问题的实际消息来自WordPress本身,而不是WooCommerce。特别试着查看wp-includes / user.php。如果您想更改消息,我强烈建议您使用挂钩来防止在更新WP时丢失修改。

答案 1 :(得分:0)

我知道这篇文章很旧,但是如果它可以帮助某人,我认为您需要修改的代码位于文件“ woocommerce / includes / class-wc”中的“ process_login()”函数中-form-handler.php”:

if ( is_wp_error( $user ) ) {
    $message = $user->get_error_message();
    $message = str_replace( '<strong>' . esc_html( $creds['user_login'] ) . '</strong>', '<strong>' . esc_html( $creds['user_login'] ) . '</strong>', $message );
    throw new Exception( $message );
} else {

您可以在引发异常之前更改消息。(由于我不了解str_replace的附加值,因为它什么都不做,因此我无法理解。)

欢迎发表评论。