我尝试使用此代码更改结账页面上的产品名称,它确实更改了名称,但随后我的结帐页面在产品显示区域上有一个圆圈,在信用卡表单上有另一个圆圈,不断旋转。
foreach ( $cart->get_cart() as $cart_item ) {
// Only for the defined product ID (or variation ID)
if ( in_array( $defined_product_id, [ $cart_item['product_id'], $cart_item['variation_id'] ] ) ) {
$new_prod = strval( $_GET['new_product_name'] );
$cart_item['data']->set_price( $new_price );
$cart_item['data']->set_name( $new_prod );
}
谢谢,
我测试了set_name(“abc”);无需旋转即可工作,但如何从 URL 获取值才能正常工作?
您遇到的无休止的旋转问题可能与更改产品名称后页面处理更新的方式有关。当您使用
set_name("abc")
手动设置名称时,它会起作用,因为它很简单,并且不涉及任何动态内容。
要使 URL 中的值正常工作,您可以尝试以下步骤:
检索并清理 URL 参数:确保您从 URL 安全地检索产品名称。您可以像这样使用
filter_input
函数:
$new_prod = filter_input(INPUT_GET, 'new_product_name', FILTER_SANITIZE_STRING);
更新产品名称:使用清理后的值设置产品名称:
foreach ( $cart->get_cart() as $cart_item ) {
// Only apply to the defined product ID (or variation ID)
if ( in_array( $defined_product_id, [ $cart_item['product_id'], $cart_item['variation_id'] ] ) ) {
if ($new_prod) {
$cart_item['data']->set_name( $new_prod );
}
}
}
检查 JavaScript 问题:旋转的圆圈可能表明存在 JavaScript 问题。进行更改后,在加载结帐页面时检查浏览器控制台是否有任何错误。这可能表明存在脚本冲突或不完整的 AJAX 请求。
使用不同场景进行测试:如果问题仍然存在,请尝试通过使用不同的产品 ID 或其他 URL 参数进行测试来隔离问题,以查看问题是否特定于某些条件。