Salta la navigazione

Resolved by author

Resolved in: Woocommerce Subscriptions 8.2.0

Topic Tags: Compatibility

Overview of the issue

When viewing orders associated with WooCommerce Subscriptions while WPML is active, users may encounter a fatal PHP error:

PHP Fatal error:  Uncaught TypeError: Illegal offset type in isset or empty in .../wp-content/plugins/sitepress-multilingual-cms/classes/core-abstract-classes/class-wpml-element-translation.php:259

Workaround

Please, make sure of having a full backup of your site before proceeding.

  • Open …/wp-content/plugins/woocommerce-subscriptions/vendor/woocommerce/subscriptions-core/includes/wcs-helper-functions.php file.
  • Change from:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function wcs_get_edit_post_link( $post_id ) {
        $object = wc_get_order( $post_id ); // works for both WC Order and WC Subscription objects.
     
        if ( ! $object || ! in_array( $object->get_type(), array( 'shop_order', 'shop_subscription' ), true ) ) {
            return;
        }
     
        return apply_filters( 'get_edit_post_link', $object->get_edit_order_url(), $post_id, '' );
    }
  • To:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function wcs_get_edit_post_link( $post_id ) {
        if ($post_id instanceof('WC_Subscription')){
            $post_id = $post_id->id;
            }
        $object = wc_get_order( $post_id ); // works for both WC Order and WC Subscription objects.
     
        if ( ! $object || ! in_array( $object->get_type(), array( 'shop_order', 'shop_subscription' ), true ) ) {
            return;
        }
     
        return apply_filters( 'get_edit_post_link', $object->get_edit_order_url(), $post_id, '' );
    }