at path:
ROOT
/
wp-content
/
plugins
/
woocommerce
/
src
/
Admin
/
API
/
Marketing.php
run:
R
W
Run
AI
DIR
2026-04-15 05:42:45
R
W
Run
Reports
DIR
2026-04-15 05:42:45
R
W
Run
Templates
DIR
2026-04-15 05:42:45
R
W
Run
AnalyticsImports.php
9.09 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Coupons.php
2.15 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
CustomAttributeTraits.php
3.4 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Customers.php
2.11 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Data.php
939 By
2026-04-15 05:42:45
R
W
Run
Delete
Rename
DataCountries.php
1.12 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
DataDownloadIPs.php
4.15 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Experiments.php
1.82 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Features.php
1.7 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Init.php
10.57 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
LaunchYourStore.php
5.15 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Leaderboards.php
18.22 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Marketing.php
4.84 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MarketingCampaignTypes.php
6.02 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MarketingCampaigns.php
9.64 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MarketingChannels.php
5.74 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MarketingOverview.php
3.36 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MarketingRecommendations.php
5.94 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
MobileAppMagicLink.php
2.1 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
NoteActions.php
2.39 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Notes.php
25.32 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Notice.php
2.38 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingFreeExtensions.php
2.58 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingPlugins.php
10.66 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingProductTypes.php
1.8 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingProducts.php
1.94 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingProfile.php
18.38 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingTasks.php
32.02 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
OnboardingThemes.php
5.49 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Options.php
10 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Orders.php
10.13 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
PaymentGatewaySuggestions.php
5.86 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Plugins.php
21.22 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductAttributeTerms.php
4.36 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductAttributes.php
4.46 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductCategories.php
458 By
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductForm.php
3.06 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductReviews.php
1.3 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductVariations.php
6.03 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Products.php
9.73 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ProductsLowInStock.php
17.62 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
SettingOptions.php
878 By
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Settings.php
4.2 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
ShippingPartnerSuggestions.php
6.09 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Taxes.php
4.9 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
Themes.php
6.12 KB
2026-04-15 05:42:45
R
W
Run
Delete
Rename
error_log
up
📄
Marketing.php
Save
<?php /** * REST API Marketing Controller * * Handles requests to /marketing. */ namespace Automattic\WooCommerce\Admin\API; use Automattic\WooCommerce\Admin\PluginsHelper; use Automattic\WooCommerce\Internal\Admin\Marketing\MarketingSpecs; use Automattic\WooCommerce\Admin\Features\MarketingRecommendations\Init as MarketingRecommendationsInit; defined( 'ABSPATH' ) || exit; /** * Marketing Controller. * * @internal * @extends WC_REST_Data_Controller */ class Marketing extends \WC_REST_Data_Controller { /** * Endpoint namespace. * * @var string */ protected $namespace = 'wc-admin'; /** * Route base. * * @var string */ protected $rest_base = 'marketing'; /** * Register routes. */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base . '/recommended', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'get_recommended_plugins' ), 'permission_callback' => array( $this, 'get_recommended_plugins_permissions_check' ), 'args' => array( 'per_page' => $this->get_collection_params()['per_page'], 'category' => array( 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', 'sanitize_callback' => 'sanitize_title_with_dashes', ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/knowledge-base', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'get_knowledge_base_posts' ), 'permission_callback' => array( $this, 'get_items_permissions_check' ), 'args' => array( 'category' => array( 'type' => 'string', 'validate_callback' => 'rest_validate_request_arg', 'sanitize_callback' => 'sanitize_title_with_dashes', ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/misc-recommendations', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => array( $this, 'get_misc_recommendations' ), 'permission_callback' => array( $this, 'get_recommended_plugins_permissions_check' ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } /** * Check whether a given request has permission to install plugins. * * @param WP_REST_Request $request Full details about the request. * @return WP_Error|boolean */ public function get_recommended_plugins_permissions_check( $request ) { if ( ! current_user_can( 'install_plugins' ) ) { return new \WP_Error( 'woocommerce_rest_cannot_update', __( 'Sorry, you cannot manage plugins.', 'woocommerce' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Return installed marketing extensions data. * * @param \WP_REST_Request $request Request data. * * @return \WP_Error|\WP_REST_Response */ public function get_recommended_plugins( $request ) { // Default to marketing category (if no category set). $category = ( ! empty( $request->get_param( 'category' ) ) ) ? $request->get_param( 'category' ) : 'marketing'; $all_plugins = MarketingRecommendationsInit::get_recommended_plugins(); $valid_plugins = []; $per_page = $request->get_param( 'per_page' ); foreach ( $all_plugins as $plugin ) { // default to marketing if 'categories' is empty on the plugin object (support for legacy api while testing). $plugin_categories = ( ! empty( $plugin['categories'] ) ) ? $plugin['categories'] : [ 'marketing' ]; if ( ! PluginsHelper::is_plugin_installed( $plugin['plugin'] ) && in_array( $category, $plugin_categories, true ) ) { $valid_plugins[] = $plugin; } } return rest_ensure_response( array_slice( $valid_plugins, 0, $per_page ) ); } /** * Return installed marketing extensions data. * * @param \WP_REST_Request $request Request data. * * @return \WP_Error|\WP_REST_Response */ public function get_knowledge_base_posts( $request ) { /** * MarketingSpecs class. * * @var MarketingSpecs $marketing_specs */ $marketing_specs = wc_get_container()->get( MarketingSpecs::class ); $category = $request->get_param( 'category' ); return rest_ensure_response( $marketing_specs->get_knowledge_base_posts( $category ) ); } /** * Return misc recommendations. * * @param \WP_REST_Request $request Request data. * * @since 9.5.0 * * @return \WP_Error|\WP_REST_Response */ public function get_misc_recommendations( $request ) { $misc_recommendations = MarketingRecommendationsInit::get_misc_recommendations(); return rest_ensure_response( $misc_recommendations ); } }