Commit Graph

96 Commits

Author SHA1 Message Date
Gerhard f3d9eeeef3 Introduce wc_reviews_enabled, wc_review_ratings_enabled and wc_review_ratings_required as helper functions and update all places where options are accessed directly. 2019-01-17 08:04:57 +02:00
claudiulodro 5a005d9ee9 Product structured data tweak 2019-01-04 07:51:22 -08:00
Gerhard Potgieter 55b188ad8f
Merge pull request #21111 from woocommerce/fix/structured-data-breadcrumbs
Include URL for the last element in breadcrumb list
2018-09-12 12:45:23 +02:00
Rodrigo Primo e1ac6317da Include URL for the last element in breadcrumb list
I noticed that the structured data generated by WooCommerce doesn't pass Google Structured Data validation (https://search.google.com/structured-data/testing-tool) due to the following error in the last element of the BreadcrumbList:

"The value provided for item.id must be a valid URL."

This happens because the code was explicitly omitting the URL for the last element. This commit simply removes this check and now an URL is included for every element (unless there is no URL set).
2018-08-20 18:02:38 -03:00
Rodrigo Primo 5e7c8c6959 Remove unneeded call to wc_clean() when outputting product structured data
This commit removes an unneeded call to wc_clean() before outputting product structured data to the browser. wp_json_encode() is called before the data is sent to the browser and it should be enough to escape it. wc_clean(), which calls sanitize_text_field() internally, was causing issues with the product URL when its name contained some non-ASCII characters (see #21057 for examples of characters).
2018-08-20 14:48:17 -03:00
Mike Jolley ffb6bc844c Use `get_variation_price` method in structured data to grab min/max so filters are ran.
Closes #19519
2018-03-26 12:54:17 +01:00
Claudio Sanches 539282be16 Fixed includes/class-wc-structured-data.php PHPCS violations 2018-03-21 00:19:41 -03:00
Mike Jolley 3265f594d8 Only add schema for ratings when enabled. 2018-03-08 13:03:58 +00:00
Mike Jolley 964afd3882 Include priceSpecification with valueAddedTaxIncluded
Closes #18852
2018-02-22 16:34:54 +00:00
Jason Kytros 55c664d2d7 Remove filter 'woocommerce_order_item_product' from class-wc-structured-data.php 2018-01-31 14:53:44 +02:00
Mike Jolley 1c92b970a9 Use only review count
Closes #18558
2018-01-23 11:03:30 +00:00
Mike Jolley 16870a30e7 phpcs 2018-01-11 12:32:58 +00:00
Mike Jolley 7a50512e16 Structured data 2018-01-11 12:29:12 +00:00
Mike Jolley 866f1cd818 Merge branch 'master' into pr/16191
# Conflicts:
#	includes/wc-account-functions.php
2017-08-08 13:20:17 +01:00
Claudiu Lodromanean ab543148ff Merge pull request #16335 from woocommerce/fix/16309
Add shortcode to description output in structured data
2017-08-03 11:09:16 -07:00
Mike Jolley 827083c051 Add shortcode to description output in structured data
Closes #16309
2017-08-03 08:28:35 +02:00
opportus f448c692ca Fixes #16010
Allows single SD item having a `@context`
2017-08-01 14:32:40 +02:00
Saul Fautley 68470b51a4 Updated structured data for products
- Replaced outdated `priceSpecification` with `AggregateOffer`.
- Restructured data according to Google's latest specifications.
- Use product short_description if available.
2017-07-19 18:53:02 +02:00
Mike Jolley d7ed343178 Revise where context is added. 2017-07-07 11:20:34 +01:00
claudiulodro fe09b4cf54 Remove side-effects 2017-07-03 13:57:32 -07:00
claudiulodro 6706da6d45 Move to prevent undefined errors 2017-06-29 11:46:30 -07:00
claudiulodro 0db60b56c9 Re-add removed line. 2017-06-29 11:43:30 -07:00
Jonathan Moore 7dc2c7cd6e fixes #15283
fixes #15283 Notice: Undefined property: stdClass::$post_ID in wp-content/plugins/woocommerce/includes/class-wc-structured-data.php on line 262 
when calling wp_list_comments with $options['callback'] = 'woocommerce_comments'
2017-05-26 07:59:42 +08:00
Mike Jolley e0583d2cd9 Merge branch 'master' into update/14848
# Conflicts:
#	includes/class-wc-structured-data.php
2017-05-08 19:13:12 +01:00
Claudio Sanches ec5df6450c Merge pull request #14931 from woocommerce/fix/14854
Hide offers from structured markup when blank
2017-05-08 14:01:58 -03:00
Mike Jolley 3c57508f56 Correct variable name in order structured data
Fixes #14944
2017-05-08 17:46:40 +01:00
Mike Jolley 7d956ca797 If prices are the same for all variations, use price not priceSpecification
Closes #14848
2017-05-08 16:53:27 +01:00
Mike Jolley c7e9a4c809 Hide offers from structured markup when blank
Fixes #14854
2017-05-08 11:59:33 +01:00
Mike Jolley d5205b97f8 Abort generate_breadcrumblist_data is there are no crumbs 2017-04-20 17:04:48 +01:00
Brandon Hubbard fe81c3d74b Updated Schema URLs to use HTTPS 2017-04-17 12:35:21 -03:00
Mike Jolley 7bdf8302ec Restores itemReviewed structured data for product reviews 2017-04-13 16:30:06 +01:00
Claudio Sanches 01c425398c Merge pull request #14012 from woocommerce/fix/13930-alt
Hide structured data in hidden element
2017-04-06 10:14:30 -03:00
Mike Jolley 36e9b73ef3 Make sure we have a product before generating JSON 2017-04-06 12:40:53 +01:00
Mike Jolley 52939e800c Hide structured data in hidden element 2017-04-06 10:06:21 +01:00
Claudio Sanches 59c2849736 Changed version 2.7 to 3.0 2017-03-15 13:36:53 -03:00
Mike Jolley 53962f1143 Other date_date call replacements 2017-03-10 16:43:05 +00:00
Brent Shepherd 759de5cc00 Fix undefined $order_url variable
In the case of an order with no items.

Fix redundantly setting the $order_url multiple times in the case
of orders with more than one line item.
2017-03-02 13:09:38 -08:00
Mike Jolley f2990b0c7d Check we have a WC_Order during email events 2017-02-27 17:08:13 +00:00
Mike Jolley 7739bca4fa Skip replies unless they have a rating. 2017-02-24 12:34:09 +00:00
Mike Jolley 0de73ee4f9 Only show reviewRating when rating is set. 2017-02-24 12:32:39 +00:00
Mike Jolley ca55291263 Skip plain text 2017-02-20 12:04:53 +00:00
Akeda Bagus 9ad529f170
Replaced deprecated woocommerce_format_decimal with wc_format_decimal.
Fixes #13208.
2017-02-16 13:49:56 +07:00
Mike Jolley 66bceedbf8 Send min and max price, not all variation prices
Closes #12811
2017-02-08 11:40:04 +00:00
Mike Jolley 76b32c9aa5 WIP - Product CRUD (#12065)
* Created function to get the catalog visibility options

* First methods for WP_Product crud

* Product set methods

* Fixed several erros while setting data

* First methods for WP_Product crud

* Product set methods

* Fixed several erros while setting data

* Hardcode the get_type per product class

* Initial look through getters and setters and abstract data

* Missing var

* Add related product functions and deprecate those in class.

* No need to exclude ID

* Fixed coding standards and improved the docblocks

* Get cached terms from wc_get_related_terms()

* Fixed wrong variable in wc_get_related_terms

* Use count() instead of sizeof()

* Sanitize ids later

* Remove unneeded comments

* wc_get_product_term_ids instead of related wording and use in other places.

get_the_terms is used here and also handles caching, something
wp_get_post_terms does not.

* Clean up the abstract product class a bit, deprecate two functions we have renamed, make update & create work properly, and add some tests for it.

* Bump template version

* Handle PR feedback: Remove duplicate regular_price update, allow changing of post status for products, remove deprecation for get_title since we might still offer it as a function

* Made abstract function useful

* External Product CRUD

* _virtual meta should be 'no', not taxable, in product unit test helper

* Grouped product class

* Tests

* Move children to meta and update test

* Use get_upsell_ids

* Spacing in query

* Moving and refactoring methods

* Availability html

* Tidy/add todos

* Rename method

* Put back review functions (still todo)

* missing $this

* get_price_including_tax/excluding_tax functions

* wc_get_price_to_display

* Price handling

* [Product CRUD] Variable (#12146)

* [Product CRUD] Variable Products

* Handle PR feedback.

* [Product CRUD] Grouped Handling (#12151)

* Handle grouped product saving

* Update routine

* [Product CRUD] Product crud terms (#12149)

* Category and tag id handling

* Replace template functions

* Remove todo

* Handle default name in save function

* Product crud admin save routine (#12174)

* Initial props

* Work on admin saving

* Set/get attributes

* Atom was moaning about this before but no longer.

* Update get_shipping_class

* WC_Product_Attribute

* Use getter in admin panel

* Fix attribute saving

* Spacing

* Fix comment

* wc_implode_text_attributes helper function

* [Product CRUD] Product crud admin use getters (#12196)

* Initial props

* Work on admin saving

* Set/get attributes

* Atom was moaning about this before but no longer.

* Update get_shipping_class

* WC_Product_Attribute

* Use getter in admin panel

* Fix attribute saving

* Move settings into new files

* Refactor panels and use getters

* Use getters for variation panel

* Revert save variation changes for now

* Add todos

* Fix downloads

* REST API CRUD Updates

* Additional API updates/fixes. Added some todos

* Fix final failing tests and implementing setters/getters and attributes functionality.

* Fix comparison for is_on_sale and remove download_type from WC_Product.

* Add a wc_get_products wrapper.

* Remove the download type input from the product data metabox for downloadable products. (#12221)

* [Product CRUD] Variations - setters, getters and admin. (#12228)

* Started on variation changes

* Stock functions

* Variation class

* Bulk change ->id to get_id() to fix variation form display

* Missing status

* Fix add to cart

* Start on stored data save

* save variation

* Save_variations

* Variation edit panel

* Save variations code works.

* Remove stored data code and fix save

* Improve legacy class

* wc_bool_to_string

* prepare_set_attributes

* Use wc_get_products

* More feedback fixes

* Feedback fixes

* Implement CRUD in the legacy REST API

* Handle PR feedback

* [Product CRUD] Getter setter proxy methods (#12236)

* Started on variation changes

* Stock functions

* Variation class

* Bulk change ->id to get_id() to fix variation form display

* Missing status

* Fix add to cart

* Start on stored data save

* save variation

* Save_variations

* Variation edit panel

* Save variations code works.

* Remove stored data code and fix save

* Improve legacy class

* wc_bool_to_string

* prepare_set_attributes

* Use wc_get_products

* More feedback fixes

* get_prop implementation in abstract and data classes

* Implement set_prop

* Change handling

* Array key exists

* set_object_read

* Use get_the_terms() instead of wp_get_post_terms()

wp_get_post_terms() is a wrapper around wp_get_object_terms() which does not
use the object cache, and generates a database query every time it is used.

get_the_terms() however can use data from the object cache if present.

* Allow WP_Query to preload post data, and meta in wc_get_products()

Allow WP_Query to bulk query for post data and meta if more than
just IDs are requested from wc_get_products(). Reduces query count
significantly.

* [Product CRUD] Variable, variation, notices, and stock handling (#12277)

* No longer needed

* Remove old todos

* Use getters in admin list

* Related and upsells update for CRUD

* Fix notice in gallery

* Variable fixes and todos

* Context

* Price sync

* Revert variation attributes change

* Return parent data in view context

* Defer term counting

* wc_find_matching_product_variation

* Stock manage tweaks

* Stock fixes

* Correct id

* correct id

* Better sync

* Data logic setter fix

* feedback

* First methods for WP_Product crud

* Product set methods

* Fixed several erros while setting data

* Hardcode the get_type per product class

* Initial look through getters and setters and abstract data

* Missing var

* Fixed coding standards and improved the docblocks

* Get cached terms from wc_get_related_terms()

* Fixed wrong variable in wc_get_related_terms

* Use count() instead of sizeof()

* Add related product functions and deprecate those in class.

* No need to exclude ID

* Sanitize ids later

* Clean up the abstract product class a bit, deprecate two functions we have renamed, make update & create work properly, and add some tests for it.

* Remove unneeded comments

* wc_get_product_term_ids instead of related wording and use in other places.

get_the_terms is used here and also handles caching, something
wp_get_post_terms does not.

* Handle PR feedback: Remove duplicate regular_price update, allow changing of post status for products, remove deprecation for get_title since we might still offer it as a function

* External Product CRUD

* _virtual meta should be 'no', not taxable, in product unit test helper

* Bump template version

* Made abstract function useful

* Grouped product class

* Tests

* Move children to meta and update test

* Use get_upsell_ids

* Spacing in query

* Moving and refactoring methods

* Availability html

* Tidy/add todos

* Rename method

* Put back review functions (still todo)

* missing $this

* get_price_including_tax/excluding_tax functions

* wc_get_price_to_display

* Price handling

* [Product CRUD] Variable (#12146)

* [Product CRUD] Variable Products

* Handle PR feedback.

* [Product CRUD] Grouped Handling (#12151)

* Handle grouped product saving

* Update routine

* [Product CRUD] Product crud terms (#12149)

* Category and tag id handling

* Replace template functions

* Remove todo

* Handle default name in save function

* Product crud admin save routine (#12174)

* Initial props

* Work on admin saving

* Set/get attributes

* Atom was moaning about this before but no longer.

* Update get_shipping_class

* WC_Product_Attribute

* Use getter in admin panel

* Fix attribute saving

* Spacing

* Fix comment

* wc_implode_text_attributes helper function

* [Product CRUD] Product crud admin use getters (#12196)

* Initial props

* Work on admin saving

* Set/get attributes

* Atom was moaning about this before but no longer.

* Update get_shipping_class

* WC_Product_Attribute

* Use getter in admin panel

* Fix attribute saving

* Move settings into new files

* Refactor panels and use getters

* Use getters for variation panel

* Revert save variation changes for now

* Add todos

* Fix downloads

* REST API CRUD Updates

* Additional API updates/fixes. Added some todos

* Fix final failing tests and implementing setters/getters and attributes functionality.

* Fix comparison for is_on_sale and remove download_type from WC_Product.

* Add a wc_get_products wrapper.

* Remove the download type input from the product data metabox for downloadable products. (#12221)

* [Product CRUD] Variations - setters, getters and admin. (#12228)

* Started on variation changes

* Stock functions

* Variation class

* Bulk change ->id to get_id() to fix variation form display

* Missing status

* Fix add to cart

* Start on stored data save

* save variation

* Save_variations

* Variation edit panel

* Save variations code works.

* Remove stored data code and fix save

* Improve legacy class

* wc_bool_to_string

* prepare_set_attributes

* Use wc_get_products

* More feedback fixes

* Feedback fixes

* Implement CRUD in the legacy REST API

* Handle PR feedback

* [Product CRUD] Getter setter proxy methods (#12236)

* Started on variation changes

* Stock functions

* Variation class

* Bulk change ->id to get_id() to fix variation form display

* Missing status

* Fix add to cart

* Start on stored data save

* save variation

* Save_variations

* Variation edit panel

* Save variations code works.

* Remove stored data code and fix save

* Improve legacy class

* wc_bool_to_string

* prepare_set_attributes

* Use wc_get_products

* More feedback fixes

* get_prop implementation in abstract and data classes

* Implement set_prop

* Change handling

* Array key exists

* set_object_read

* Use get_the_terms() instead of wp_get_post_terms()

wp_get_post_terms() is a wrapper around wp_get_object_terms() which does not
use the object cache, and generates a database query every time it is used.

get_the_terms() however can use data from the object cache if present.

* [Product CRUD] Variable, variation, notices, and stock handling (#12277)

* No longer needed

* Remove old todos

* Use getters in admin list

* Related and upsells update for CRUD

* Fix notice in gallery

* Variable fixes and todos

* Context

* Price sync

* Revert variation attributes change

* Return parent data in view context

* Defer term counting

* wc_find_matching_product_variation

* Stock manage tweaks

* Stock fixes

* Correct id

* correct id

* Better sync

* Data logic setter fix

* feedback

* Prevent notices

* Handle image_id from parent

* Fix error

* Remove _wc_save_product_price

* Remove todo

* Fixed wrong variation URLs

* Fixed undefined $image_id in WC_Product_Variation::get_image_id()

* Allow wc_rest_prepare_date_response() handle timestamps

* Updated get methods on REST API for variations

* Use variations CRUD to save variations metadata

* [Product CRUD] Abstract todos (#12305)

* Get dimensions and weights, with soft deprecation

* Product attributes

* Ratings

* Fix read method

* Downloads

* Feedback

* Revert "[Product CRUD] Abstract todos (#12305)"

This reverts commit 9a6136fcf8.

* Remove deprecated get_variation_id()

* New default attributes method

* [Product CRUD] Product Datastore (#12317)

* Fix up tests in the product/* folder.

* Handle data store updates for grouped, variable, external, simple, and general data store updates for products.

* Variations & variable changes.

* Update -functions.php calls to use data store.

* Add an interface for the public product data store methods.

* Finished product factory tests

* Correctly delete in the api, fix up some comments, and implement an interface for the public variable methods.

* Fix up delete in all versions of the api

* Handle feedback

* Match protected decloration to parent

* Product crud abstract todos (#12316)

* Get dimensions and weights, with soft deprecation

* Product attributes

* Ratings

* Fix read method

* Downloads

* Feedback

* Fix up store

* Fixed method returning in write context

* Fix error in variation admin

* Check for parent value - fixes tax class

* Remove old/complete todos

* Allow set tax class as "parent"

* Removed duplicated sync

* Fixed wrong variation URLs

* Fixed undefined $image_id in WC_Product_Variation::get_image_id()

* Allow wc_rest_prepare_date_response() handle timestamps

* Updated get methods on REST API for variations

* Use variations CRUD to save variations metadata

* Remove deprecated get_variation_id()

* New default attributes method

* Fixed method returning in write context

* Allow set tax class as "parent"

* Removed duplicated sync

* Fixed coding standards

* TODO is not accurate.

* Should pass WC_Product instancies to WC_Comments methods (#12327)

* Use new method in abstract order class to prevent headers sent issue in tests

* Fixed variable description in REST API

* Updated how create initial product variation

* Fixed a few fatal errors and warnings in Products CRUD (#12329)

* Fixed a few fatal errors and warnings in Products CRUD

* Fixed sync functions

* Add variations CRUD to legacy API (#12331)

* Apply crud to variable products in legacy API v1

* New REST API do not need fallback for default attributes

* Apply variations CRUD to legacy API v2

* Legacy v2 - save default attributes

* Variations in legacy API v2 do not have descriptions

* Fixed legacy API v2 variations params

* Applied variations CRUD to legacy API v3

* Sync before save in legacy apis

* Punc

* Removed API todos

* Removed test

* Products endpoint tweaks (#12354)

* Var type already normalized on CRUD

* Let Product CRUD handle with validation, sanitization and conditional checks

* Set downloads using WC_Product_Download

* Stop try catch exceptions more than one time

* Handle WC_Data_Exception in legacy API

* Complete remove products when fails on creating

* On creating I mean!

* Already have a method to complete delete products

* Fixed standards using WP CodeSniffer

* get_the_terms() returns false when empty

* get_manage_stock returns boolean

@claudiosanches

* Merge conflict

* Variations API endpoint fixes

* Product CRUD improvements (#12359)

* args is not used any more - remove todo

* Added test for attributes

* wc_get_price_excluding_tax usage

* parent usage

* Fix rating counts

* Test fixes

* Cleanup after tests

* Make sure status transition code runs even during API calls, not just in admin.

* Default visibility

* Fix attribute setting in API

* Use get name instead of get title

* variation id usage

* Improved cross sell templates

* variation_data

* Grouped product sync

* Notices

* Sync is not needed in API

* Delete

* Rename interfaces

* Update counts in data store
2016-11-16 12:38:24 +00:00
Claudio Sanches f85bb56cb1 Less code on the fly inside ld+json 2016-11-03 15:00:57 -02:00
Lee Willis 237ebc0e95 Filter the (JSON+LD) offers separately from the overall product data (#12234)
* Filter the offers separately from the overall product markup

* Rename filter as per feedback on the PR
2016-11-03 11:47:45 +00:00
Claudio Sanches c58940258a Updated $order->id to $order->get_id() 2016-10-25 22:46:36 -02:00
Claudio Sanches 3f9c16fe49 Fixed coding standards 2016-10-13 20:54:47 -03:00
Claudio Sanches d5fa492378 Reverted the woocommerce_structured_data_product_limited filter name 2016-10-13 20:43:30 -03:00
Claudio Sanches a9c8c79f58 Removed extra space 2016-10-13 19:54:21 -03:00