plugin = $plugin; $this->screens = $this->build_menu_item_array(); add_action( 'admin_init', array( $this, 'add_extra_screens' ) ); add_action( 'admin_menu', array( $this, 'add_menu_item' ) ); add_action( 'wp_loaded', array( $this, 'save' ) ); add_action( 'admin_notices', array( $this, 'display_fb_product_sets_removed_banner' ) ); } /** * Arranges the tabs. * * @since 3.5.0 * * @return array */ public function build_menu_item_array(): array { $is_connected = $this->plugin->get_connection_handler()->is_connected(); $is_woo_all_products_sync_enbaled = $this->plugin->get_rollout_switches()->is_switch_enabled( RolloutSwitches::SWITCH_WOO_ALL_PRODUCTS_SYNC_ENABLED ); if ( $is_connected ) { if ( $is_woo_all_products_sync_enbaled ) { $screens = array( Settings_Screens\Shops::ID => new Settings_Screens\Shops(), Settings_Screens\Product_Attributes::ID => new Settings_Screens\Product_Attributes(), ); } else { /** * If not enabled then the product sync tab should show itself */ $screens = array( Settings_Screens\Shops::ID => new Settings_Screens\Shops(), Settings_Screens\Product_Sync::ID => new Settings_Screens\Product_Sync(), Settings_Screens\Product_Attributes::ID => new Settings_Screens\Product_Attributes(), ); } } else { $screens = [ Settings_Screens\Shops::ID => new Settings_Screens\Shops() ]; } return $screens; } /** * Add extra screens to $this->screens - basic settings_screens * * @since 3.5.0 * * @return void */ public function add_extra_screens(): void { $rollout_switches = $this->plugin->get_rollout_switches(); $is_connected = $this->plugin->get_connection_handler()->is_connected(); } /** * Adds the Facebook menu item. * * @since 3.5.0 */ public function add_menu_item() { $root_menu_item = $this->root_menu_item(); add_submenu_page( $root_menu_item, __( 'Meta for WooCommerce', 'facebook-for-woocommerce' ), __( 'Facebook', 'facebook-for-woocommerce' ), 'manage_woocommerce', self::PAGE_ID, [ $this, 'render' ], 5 ); $this->connect_to_enhanced_admin( $this->is_marketing_enabled() ? 'marketing_page_wc-facebook' : 'woocommerce_page_wc-facebook' ); } /** * Gets the root menu item. * * @since 3.5.0 * * @return string */ public function root_menu_item() { if ( $this->is_marketing_enabled() ) { return 'woocommerce-marketing'; } return 'woocommerce'; } /** * Checks if marketing feature is enabled. * * @since 3.5.0 * * @return bool */ public function is_marketing_enabled() { if ( class_exists( WooAdminFeatures::class ) ) { return WooAdminFeatures::is_enabled( 'marketing' ); } return is_callable( '\Automattic\WooCommerce\Admin\Loader::is_feature_enabled' ) && \Automattic\WooCommerce\Admin\Loader::is_feature_enabled( 'marketing' ); } /** * Enables enhanced admin support for the main Facebook settings page. * * @since 3.5.0 * * @param string $screen_id */ private function connect_to_enhanced_admin( $screen_id ) { if ( is_callable( 'wc_admin_connect_page' ) ) { wc_admin_connect_page( array( 'id' => self::PAGE_ID, 'screen_id' => $screen_id, 'path' => add_query_arg( 'page', self::PAGE_ID, 'admin.php' ), 'title' => [ __( 'Meta for WooCommerce', 'facebook-for-woocommerce' ) ], ) ); } } /** * Renders the settings page. * * @since 3.5.0 */ public function render() { $current_tab = $this->get_current_tab(); $screen = $this->get_screen( $current_tab ); Logger::log( 'User visited the Meta for WooCommerce settings' . $current_tab . 'tab', array( 'flow_name' => 'settings', 'flow_step' => $current_tab . '_tab_rendered', ), array( 'should_send_log_to_meta' => true, 'should_save_log_in_woocommerce' => true, 'woocommerce_log_level' => \WC_Log_Levels::DEBUG, ) ); ?>
get_description() ); ?>
render(); ?>