Support » Plugin: Site Reviews » Merge structured data values to WooCommerce default Product Structure Data

  • Resolved ranone

    (@ranone)


    Is there a best way merge the aggregateRating and review info to the WooCommerce default Product Structured Data?

    I’ve set “Default Schema Type” = Product into the “Schema” tab in Setting page, but nothing happens…

    The default Woocommerce product structured data are generated from generate_product_data() function into wp-content/plugins/woocommerce/includes/class-wc-structured-data.php file..

    Alternatively is there a way to disable this SiteReview plugin function?

    Thanks a lot, Daniel

Viewing 12 replies - 1 through 12 (of 12 total)
  • Plugin Author Gemini Labs

    (@geminilabs)

    The schema is disabled by default. You have to enable the option in the editor block or shortcode for it to generate the schema.

    [site_reviews schema=true]

    If you change the Schema Type to “Product” and enable the schema in the shortcode, google should see them (Site Reviews schema and Woocommerce schema) as linked.

    Thread Starter ranone

    (@ranone)

    I’ve added to function.php this code but non change anything into structured data testing tool of Google.

    
    // Add reviews to sections product pages
    add_action( 'woocommerce_after_single_product_summary', 'add_reviews_code_for_products', 10 );
    
    function add_reviews_code_for_products() {
        echo do_shortcode('[site_reviews assigned_to=post_id schema=true]');
    }
    

    I already had the parameter schema=true into my code..

    Where I wrong?

    Thanks a lot

    • This reply was modified 3 years, 6 months ago by ranone.
    Plugin Author Gemini Labs

    (@geminilabs)

    When you change the Schema Type to “Product”, Site Reviews adds an @id to the schema with the URL of the page as the value. Woocommerce also uses the URL of the product as the @id in its schema.

    The @id tag is used to link multiple schema together. If the schema type and id are identical, then search engines will see those schemas as connected.

    Please verify using Google’s Structured Data Testing Tool that the @id is identical in both schemas.

    Thread Starter ranone

    (@ranone)

    I found a comment that clarifies the mystery …

    Below the Woocommerce code:

    
    /** 
     * Generates Product structured data.
     */
    public function generate_product_data( $product = null ) { 
            [...]
    
            $markup = array(
                    '@type'       => 'Product',
                    '@id'         => $permalink . '#product', // Append '#product' to differentiate between this @id and the @id generated for the Breadcrumblist.
                    'name'        => $product->get_name(),
                    'url'         => $permalink,
                    'image'       => wp_get_attachment_url( $product->get_image_id() ),
                    'description' => wp_strip_all_tags( do_shortcode( $product->get_short_description() ? $product->get_short_description() : $product->get_description() ) ),
            ); 
    [...] 
    

    The comment “Append ‘#product’ to differentiate between this @id and the @id generated for the Breadcrumblist” tells us where the SiteReview plugin metadata ends…

    So… I have the result that the BreadcrumbList @type has all the correct data and the Product @type has a series of missing values​​…

    Perhaps the most correct solution for Woocommerce is repeat the SiteReview plugin data to @type Product by creating another JSON with “url + #prodcut” like @id?

    what do you think about it?

    Plugin Author Gemini Labs

    (@geminilabs)

    Thanks @ranone

    It looks like the Woocommerce v3.5.5 release (2019-02-20) fixed a long-standing issue with their Breadcrumb and Product schemas using the same value for the @id which caused schema collisions.

    Please see a more detailed explanation of the problem here:
    https://wordpress.org/support/topic/schema-appears-under-breadcrumblist-in-google-structured-data-tool-2/#post-10880708

    And some other related links:
    https://github.com/Yoast/wordpress-seo/issues/10314
    https://github.com/woocommerce/woocommerce/pull/22554

    Please update to Site Reviews v3.5.4 which adds the #product fragment to the @id to match the change in the Woocommerce plugin.

    • This reply was modified 3 years, 6 months ago by Gemini Labs.
    Thread Starter ranone

    (@ranone)

    Thanks a lot! All work fine now! 🙂

    Thread Starter ranone

    (@ranone)

    Sorry, I don’t know if it’s a lack of WooCommerce or not … but I have these notices in the Google structured data testing tool:

    ## BEFORE SITEREVIEW ACTIVATION ##
    5 warnings:
    – offerCount (AggregateOffer)
    – aggregateRating (Product)
    – review (Product)
    – brand (Product)
    – missing isbn|mpn|gtin8 (Product)

    ## AFTER SITEREVIEW ACTIVATION ##
    2 Errors:
    – lowPrice (AggregateOffer)
    – priceCurrency (AggregateOffer)

    4 warnings:
    – highPrice (AggregateOffer)
    – 2 x offerCount (AggregateOffer)
    – brand (Product)
    – missing isbn|mpn|gtin8 (Product)

    Do you have any idea what the problem may be?

    • This reply was modified 3 years, 6 months ago by ranone.
    • This reply was modified 3 years, 6 months ago by ranone.
    Plugin Author Gemini Labs

    (@geminilabs)

    1. Please make sure the, “Low Price”, “High Price”, and “Price Currency” Site Reviews schema options are left empty.

    2. Add the following code to your functions.php file:

    /**
     * Removes "offers" from the Site Reviews Product schema as this is handled by Woocommerce.
     * Paste this in your active theme's functions.php file.
     * @return array
     */
    add_filter( 'site-reviews/schema/Product', function( $schema ) {
        unset( $schema['offers'] );
        return $schema;
    });

    This will remove the errors. Since you are using Woocommerce, the warnings do not matter as long as Woocommerce generates the schema values for the rest.

    Site Reviews v3.6.0 will automatically omit the “offers” part of the schema if the “Low Price”, “High Price”, and “Price Currency” options are left empty.

    Thread Starter ranone

    (@ranone)

    Ohh thanks!

    Now the testing tool notify me only:

    – offerCount (AggregateOffer)
    – brand (Product)
    – missing isbn|mpn|gtin8 (Product)

    Can you confirm that it’s all a Woocommerce problem?

    Plugin Author Gemini Labs

    (@geminilabs)

    Yes, since the Site Reviews schema is linked to the Woocommerce schema, these values should now be generated by Woocommerce based on your product settings.

    Note: Warnings are not errors. The warnings generally indicate missing fields that are recommended by Google, but not required.

    Thread Starter ranone

    (@ranone)

    Ok, tks 🙂

    Moderator Jan Dembowski

    (@jdembowski)

    Forum Moderator and Brute Squad

    @danazva Please do not resurrect 4 month old topics. I’ve archived your reply and closed this old topic.

Viewing 12 replies - 1 through 12 (of 12 total)
  • The topic ‘Merge structured data values to WooCommerce default Product Structure Data’ is closed to new replies.