• Resolved gamecreature

    (@gamecreature)


    Since the 2.0.21 release the REST API call, fetching all terms for an attribute fails with the following error. This only happens for the first time I do this call, later call seem to work correctly.

    PHP Fatal error:  Uncaught Error: Call to undefined method Woo_Variation_Swatches_Backend::get_group() in /wp-content/plugins/woo-variation-swatches/includes/class-woo-variation-swatches-wc-api-response.php:50
    Stack trace:
    #0 /wp-includes/rest-api/endpoints/class-wp-rest-controller.php(439): Woo_Variation_Swatches_WC_API_Response->get_additional_response()
    #1 /wp-content/plugins/woocommerce/includes/rest-api/Controllers/Version1/class-wc-rest-product-attribute-terms-v1-controller.php(150): WP_REST_Cont
    roller->add_additional_fields_to_object()
    #2 /wp-content/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-terms-controller.php(349): WC_REST_Product_Attribute_Terms_V
    1_Controller->prepare_item_for_response()
    #3 /wp-includes/rest-api/class-wp-rest-server.php(118 in /wp-content/plugins/woo-variation-swatche
    s/includes/class-woo-variation-swatches-wc-api-response.php on line 50

    The addition rest api response calls a method that hasn’t been defined.
    When I disable this block the code works as expected.

    Workaround for now is to remove the extra rest-api (get_callback) call in /wp-content/plugins/woo-variation-swatches/includes/class-woo-variation-swatches-wc-api-response.php:30

    public function register_woo_variation_swatches_field() {
      register_rest_field('product_attribute_term', 'woo_variation_swatches', array(
        // 'get_callback'    => array( $this, 'get_additional_response' ),  // << FIX
        'update_callback' => array( $this, 'update_additional_response' ), 
        'schema'          => array( $this, 'additional_response_schema' ),
      ));
    }
    

    It looks like the class hasn’t been loaded yet in this situation?

    • This topic was modified 1 year, 4 months ago by gamecreature.
Viewing 11 replies - 1 through 11 (of 11 total)
  • Plugin Support fizanzvai

    (@fizanzvai)

    @gamecreature

    Thanks for reaching out to us. Can you please record me how to generate this error? You can use a tool like https://loom.com to record your screen.

    It will help me to replicate the issue from my end and I can send it to our development team for further checking.

    Hope to hear from you soon.

    Thanks again for reporting.

    Thread Starter gamecreature

    (@gamecreature)

    It’s a bit difficult to make a screen cast of this. Invoking the API fails.
    Below is an example for the curl command to fetch the terms of a product attribute. Which fails since this version.
    (the PHP error details posted above are from the error.log file)

    curl https://www.example.com/wp-json/wc/v3/products/attributes/1/terms \
    --header "Accept: application/json" \
    --header "Authorization: secret"
    
    {"code":"internal_server_error","message":"
    Er heeft zich een kritieke fout voorgedaan op deze site.<\/p> Meer informatie over probleemoplossing in WordPress.<\/a><\/p>","data":{"status":500},"additional_errors":[]}

    When I disable the get_callback the response is as expected (and as it was before)

    curl https://www.example.com/wp-json/wc/v3/products/attributes/1/terms \
    --header "Accept: application/json" \
    --header "Authorization: secret"
    
    [{"id":157,"name":"Adidas","slug":"adidas","description":"","menu_order":0,"count":50,"_links":{"self":[{"href":"https://www.example.com/wp-json/wc/v3/products/attributes/1/terms/157"}],"collection":[{"href":"https://www.example.com/wp-json/wc/v3/products/attributes/1/terms"}]}},{"id":211,"name":"Asics","slug":"asics","description":"","menu_order":0,"count":63,"_links":{"self":[{"href":"https://www.example.com/wp-json/wc/v3/products/attributes/1/terms/211"}],"collection":[{"href":"https://www.example.com/wp-json/wc/v3/products/attributes/1/terms"}]}}]
    • This reply was modified 1 year, 4 months ago by gamecreature.
    • This reply was modified 1 year, 4 months ago by gamecreature.

    When calling the API Endpoint:

    https://domain.com/wp-json/wc/v3/products/attributes/1/terms

    The server returns:

    {"code":"internal_server_error","message":"<p>There has been a critical error on this website.<\/p><p><a href=\"https:\/\/wordpress.org\/documentation\/article\/faq-troubleshooting\/\">Learn more about troubleshooting WordPress.<\/a><\/p>","data":{"status":500},"additional_errors":[]}

    And this is logged to the PHP log:

    [14-Jun-2023 03:32:09 UTC] PHP Fatal error:  Uncaught Error: Call to undefined method Woo_Variation_Swatches_Backend::get_group() in /var/www/domain.com/wp-content/plugins/woo-variation-swatches/includes/class-woo-variation-swatches-wc-api-response.php:50
    Stack trace:
    #0 /var/www/domain.com/wp-includes/rest-api/endpoints/class-wp-rest-controller.php(439): Woo_Variation_Swatches_WC_API_Response->get_additional_response()
    #1 /var/www/domain.com/wp-content/plugins/woocommerce/includes/rest-api/Controllers/Version1/class-wc-rest-product-attribute-terms-v1-controller.php(150): WP_REST_Controller->add_additional_fields_to_object()
    #2 /var/www/domain.com/wp-content/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-terms-controller.php(349): WC_REST_Product_Attribute_Terms_V1_Controller->prepare_item_for_response()
    #3 /var/www/domain.com/wp-includes/rest-api/class-wp-rest-server.php(1181): WC_REST_Terms_Controller->get_items()
    #4 /var/www/domain.com/wp-includes/rest-api/class-wp-rest-server.php(1028): WP_REST_Server->respond_to_request()
    #5 /var/www/domain.com/wp-includes/rest-api/class-wp-rest-server.php(442): WP_REST_Server->dispatch()
    #6 /var/www/domain.com/wp-includes/rest-api.php(410): WP_REST_Server->serve_request()
    #7 /var/www/domain.com/wp-includes/class-wp-hook.php(308): rest_api_loaded()
    #8 /var/www/domain.com/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters()
    #9 /var/www/domain.com/wp-includes/plugin.php(565): WP_Hook->do_action()
    #10 /var/www/domain.com/wp-includes/class-wp.php(399): do_action_ref_array()
    #11 /var/www/domain.com/wp-includes/class-wp.php(780): WP->parse_request()
    #12 /var/www/domain.com/wp-includes/functions.php(1334): WP->main()
    #13 /var/www/domain.com/wp-blog-header.php(16): wp()
    #14 /var/www/domain.com/index.php(17): require('...')
    #15 {main}
      thrown in /var/www/domain.com/wp-content/plugins/woo-variation-swatches/includes/class-woo-variation-swatches-wc-api-response.php on line 50

    Disabling the plugin and trying again… no error.

    Plugin Support fizanzvai

    (@fizanzvai)

    @zendev

    Thanks for sharing your experience. I have tried it using Postman and got the data successfully: https://paste.pics/OIA5H

    I am trying to replicate the issue but it is not happening from my side. It would be great if you record your screen. You can use a tool like https://loom.com to record your screen.

    Thread Starter gamecreature

    (@gamecreature)

    A screen-recording is pretty useless, I’m just invoking an API call via the command line . Posting a screencast would also expose my api-secrets in this Forum.

    The thing that goes wrong is this, the Woo_Variation_Swatches_Backend::get_group is being called for the new extra REST api info. But this method doesn’t exist in the Woo_Variation_Swatches_Backend class.

    I grepped the complete folder and get_group isn’t defined!

    Is it possible this method only exists in the pro/paid version?
    And accidentally the pro-method call is added to the free version?

    • This reply was modified 1 year, 4 months ago by gamecreature.
    • This reply was modified 1 year, 4 months ago by gamecreature.
    Plugin Support fizanzvai

    (@fizanzvai)

    @gamecreature

    Thanks for your further inspection. Sorry for the inconvenience. I am forwarding this to our development team. I will get back to you after receiving an update from my team.

    Hello I am getting similar error and I am not able to load attribute options after selecting attribute from woo mobile app also (2023-06-16T08:59:35+00:00 CRITICAL Uncaught Error: Call to undefined method Woo_Variation_Swatches_Backend::get_group())

    Plugin Support fizanzvai

    (@fizanzvai)

    @gamecreature @cgeagea @ulinkreasi @zendev

    Thank you so much for your patience. We have released an update 2.0.23. Please update to the latest version.

    Then let us know whether it resolves the issue or not.

    Hope to hear from you soon.

    Thread Starter gamecreature

    (@gamecreature)

    @fizanzvai I just installed the update. And I can confirm, the problem has been solved! Thanks!! ☺️

    • This reply was modified 1 year, 3 months ago by gamecreature.
    Plugin Support fizanzvai

    (@fizanzvai)

    @gamecreature

    A special thanks to you for your in-depth inspection.

    If you found our plugin helpful, could you leave your valuable feedback here: https://wordpress.org/support/plugin/woo-variation-swatches/reviews/

    Your feedback keeps us inspired.

Viewing 11 replies - 1 through 11 (of 11 total)
  • The topic ‘REST error since version 2.021’ is closed to new replies.