我需要修改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
文件夹中搜索也不会导致任何问题。
答案 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的附加值,因为它什么都不做,因此我无法理解。)
欢迎发表评论。