【问题标题】:WooCommerce update version 3.0.x breaks site -WooCommerce 更新版本 3.0.x 中断站点 -
【发布时间】:2017-04-10 01:52:19
【问题描述】:

我从 2.6.x 版更新到 WooCommerce 3.0.x 版,但我的网站奇怪地停止正确加载。

我收到消息:

WC_Product_Variable 类的对象无法转换为字符串

错误的来源是woocommerce/includes/wc-product-functions.php文件中的一行

$value = ucwords( str_replace( '-', ' ', $value ) );

通过注释掉包含该行的代码块(从“if ( taxonomy_exists( $name ) ) {”开始),我能够让网站再次正常运行,但我对此不太满意拼凑的解决方案。

有人能解释一下这个错误的原因吗?

这是我的代码:

foreach ( $variation_attributes as $name => $value ) {
        if ( ! $value ) {
            continue;
        }

        // If this is a term slug, get the term's nice name
        /*if ( taxonomy_exists( $name ) ) {
            $term = get_term_by( 'slug', $value, $name );
            if ( ! is_wp_error( $term ) && ! empty( $term->name ) ) {
                $value = $term->name;
            }
        } else {
            $value = ucwords( str_replace( '-', ' ', $value ) );
        }

        if ( $include_names ) {
            if ( $flat ) {
                $variation_list[] = wc_attribute_label( $name, $product ) . ': ' . rawurldecode( $value );
            } else {
                $variation_list[] = '<dt>' . wc_attribute_label( $name, $product ) . ':</dt><dd>' . rawurldecode( $value ) . '</dd>';
            }
        } else {
            if ( $flat ) {
                $variation_list[] = rawurldecode( $value );
            } else {
                $variation_list[] = '<li>' . rawurldecode( $value ) . '</li>';
            }
        }*/
    }

谢谢

【问题讨论】:

    标签: php wordpress class woocommerce product


    【解决方案1】:

    这意味着 $value 不是字符串,而是一个对象或值的数组

    所以使用 str_replace() PHP 函数无法使用它,因为它适用于字符串。

    您最好尝试在其上使用 foreach 循环或 implode() PHP 函数将其转换为字符串,但是……

    真正的问题位置:

    • 您的活动子主题(或主题)和function.php 文件大部分时间我们都会在其中放置一些自定义代码。
    • WooCommerce 中涉及的第三方插件

    WooCommerce 3.0+ 版是一个更加严格的主要版本。现在需要一种围绕 getter 和 setter 的新语法来访问大多数 WC 类中的对象。


    供参考:

    这是旧版和已弃用的函数,用于保持 WC_Abstract_Product 干净(此类将在未来版本中删除):

    【讨论】:

    • 感谢您的回答洛瑞克!我一直在尝试使用 foreach 循环,到目前为止没有成功。在这种情况下,我将如何对其进行编码?另外,知道为什么会首先出现此错误吗?我尝试禁用所有其他与 woocommerce 相关的插件,但无济于事。
    • github.com/woocommerce/woocommerce/blob/master/includes/… - 这是同一文件的 github 上传链接。对我来说,错误从第 370 行开始
    • 再次感谢 Loic 的帮助。问题最终像你所说的那样改变了WC语法。我创建了一组函数,可以根据用户角色更改我的可变产品价格,看起来语法更改会干扰它。这是一个非常复杂的文件,我花了很长时间才开始编写代码,所以我最终决定回到 WC 2 而不必重新学习所有内容。稍后我可能会使用该站点的测试版本重新访问它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2021-12-31
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2019-03-30
    相关资源
    最近更新 更多