WooCommerce - 折旧的 PHP 正常工作但更新的代码不起作用?

问题描述

我在我的网站上使用以下代码作为功能的一部分。这是一个片段 - 当然该函数包含更多信息,但这与我当前的问题无关:

$get_product_id = wc_get_product(get_the_ID());
    $get_title = $get_product_id->get_name();
    $get_cat = $get_product_id->get_categories(); // FAILING
    $get_tag = $get_product_id->get_tags(); // FAILING
    $output = '';

就目前情况而言,所有 5 行代码都可以正常工作,并允许我在前端显示我需要的所有正确信息,但是在我的 debug.PHP 文件中,我收到以下错误:>

PHP 已弃用:WC_Product::get_categories 自 3.0 版起已弃用!改用 wc_get_product_category_list。

PHP 已弃用:WC_Product::get_tags 自 3.0 版起已弃用!改用 wc_get_product_tag_list。

我明白这是因为我使用的是过时的 PHP,但这些错误给我留下了两个问题:

  1. 如果代码看起来工作正常,那么忽略调试错误是不是很糟糕?我注意到我的网站使用的一些第三方插件也返回了奇怪的调试错误(一些插件也来自非常有信誉的来源)!
  2. 在尝试使用新的(正确的)代码时,我无法获得任何帖子值,并不断获得空的返回值。我实际上需要更改什么才能使我的代码正常工作并且不会给我带来调试错误

解决方法

  1. 忽略调试错误是不是不好?我不会回答好坏,但调试错误通常意味着更大的东西可能会被破坏或行为不正确。此外,您的调试警告是弃用警告,这是需要注意的特定警告情况。一些/许多/大多数库都有弃用时间表,在版本 X 中他们将弃用某个功能,而在版本 X+1 中他们将完全删除它。我不能说 WooCommerce 是否会这样做,但您应该假设它可能在任何特定时刻发生并采取行动。

  2. 如何修复。如果您查看 get_tags(截至今天的第 386 行)的源代码,您会发现它们实际上正在使用新函数已经,所以你应该可以直接交换它。

    public function get_tags( $sep = ',',$before = '',$after = '' ) {
        wc_deprecated_function( 'WC_Product::get_tags','3.0','wc_get_product_tag_list' );
        return wc_get_product_tag_list( $this->get_id(),$sep,$before,$after );
    }

所以代替:

$get_tag = $get_product_id->get_tags(); // FAILING

您应该可以使用:

$get_tag = wc_get_product_tag_list(get_the_ID());