Exceptions
1 week ago
Frontend
1 week ago
Language
1 week ago
Store
1 week ago
Wrapper
1 week ago
Functions.php
1 week ago
Generic.php
1 week ago
Hooks.php
2 years ago
ProductSaveActions.php
1 week ago
Hooks.php
59 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WCML\Rest; |
| 4 | |
| 5 | use WCML\Rest\Wrapper\Factory; |
| 6 | |
| 7 | class Hooks { |
| 8 | |
| 9 | public static function addHooks() { |
| 10 | |
| 11 | Generic::preventDefaultLangUrlRedirect(); |
| 12 | |
| 13 | add_action( 'rest_api_init', [ Language\Set::class, 'fromUrlQueryVar' ] ); |
| 14 | add_filter( 'rest_request_before_callbacks', [ Language\Set::class, 'beforeCallbacks' ], 10, 3 ); |
| 15 | add_action( 'parse_query', [ Generic::class, 'autoAdjustIncludedIds' ] ); |
| 16 | |
| 17 | foreach ( [ 'product', 'shop_order', 'product_variation' ] as $type ) { |
| 18 | |
| 19 | $restObject = Factory::create( $type ); |
| 20 | |
| 21 | add_filter( "woocommerce_rest_{$type}_query", [ $restObject, 'query' ], 10, 2 ); |
| 22 | add_filter( "woocommerce_rest_{$type}_object_query", [ $restObject, 'query' ], 10, 2 ); |
| 23 | add_filter( "woocommerce_rest_prepare_{$type}_object", [ $restObject, 'prepare' ], 10, 3 ); |
| 24 | add_action( "woocommerce_rest_insert_{$type}_object", [ $restObject, 'insert' ], 10, 3 ); |
| 25 | } |
| 26 | |
| 27 | $attributeTaxonomies = wc_get_attribute_taxonomy_names(); |
| 28 | |
| 29 | foreach ( array_merge( [ 'product_cat', 'product_tag', 'product_shipping_class' ], $attributeTaxonomies ) as $type ) { |
| 30 | |
| 31 | $restObject = Factory::create( 'term' ); |
| 32 | |
| 33 | add_filter( "woocommerce_rest_{$type}_query", [ $restObject, 'query' ], 10, 2 ); |
| 34 | add_filter( "woocommerce_rest_prepare_{$type}", [ $restObject, 'prepare' ], 10, 3 ); |
| 35 | add_action( "woocommerce_rest_insert_{$type}", [ $restObject, 'insert' ], 10, 3 ); |
| 36 | } |
| 37 | |
| 38 | add_filter( 'woocommerce_rest_prepare_report_top_sellers', [ Factory::create( 'reports_top_seller' ), 'prepare' ], 10, 3 ); |
| 39 | add_filter( 'woocommerce_rest_prepare_report_products_count', [ Factory::create( 'reports_products_count' ), 'prepare' ], 10, 3 ); |
| 40 | add_filter( 'woocommerce_rest_prepare_report_sales', [ Factory::create( 'reports_products_sales' ), 'prepare' ], 10, 3 ); |
| 41 | add_filter( 'woocommerce_rest_prepare_product_attribute', [ Factory::create( 'product_attribute' ), 'prepare' ], 10, 3 ); |
| 42 | |
| 43 | self::addHooksSpecificForV1(); |
| 44 | } |
| 45 | |
| 46 | private static function addHooksSpecificForV1() { |
| 47 | |
| 48 | if ( 1 === Functions::getApiRequestVersion() ) { |
| 49 | add_filter( 'woocommerce_rest_prepare_product', [ Factory::create( 'product' ), 'prepare' ], 10, 3 ); |
| 50 | add_action( 'woocommerce_rest_insert_product', [ Factory::create( 'product' ), 'insert' ], 10, 3 ); |
| 51 | add_action( 'woocommerce_rest_update_product', [ Factory::create( 'product' ), 'insert' ], 10, 3 ); |
| 52 | |
| 53 | add_action( 'woocommerce_rest_insert_shop_order', [ Factory::create( 'shop_order' ), 'insert' ], 10, 3 ); |
| 54 | add_filter( 'woocommerce_rest_prepare_shop_order', [ Factory::create( 'shop_order' ), 'prepare' ], 10, 3 ); |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | } |
| 59 |