抛出弃用警告的代码可以正常工作,但更新后的代码不起作用?

Code that throw Deprecated warnings works correctly, but updated code does not work?

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

$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 Deprecated: WC_Product::get_categories is deprecated since version 3.0! Use wc_get_product_category_list instead.

PHP Deprecated: WC_Product::get_tags is deprecated since version 3.0! Use wc_get_product_tag_list instead.

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

  1. 如果代码似乎可以正常工作,忽略调试错误是否不好?我注意到我的网站使用的一些第三方插件也 return 奇怪的调试错误(一些插件也来自非常有信誉的来源)!
  2. 在尝试使用新的(正确的)代码时,我无法获得任何 post 值并且一直为空 return。我实际上需要更改什么才能让我的代码正常工作并且不会给我调试错误?
  1. 忽略调试错误不好吗?我不会回答好坏,但调试错误通常意味着更大的东西可能会被破坏或行为不正确。此外,您的调试警告是弃用警告,这是需要注意的特定警告情况。 Some/many/most 库有一个弃用时间表,在版本 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());