[ 'VV_Vendor_Dashboard', 'render' ], 'vv_add_product' => [ 'VV_Product_Form', 'render_add' ], 'vv_product_list' => [ 'VV_Product_Form', 'render_list' ], 'vv_product_edit' => [ 'VV_Product_Form', 'render_edit' ], 'vv_order_list' => [ 'VV_Order_Manager', 'render_list' ], 'vv_order_edit' => [ 'VV_Order_Manager', 'render_edit' ], 'vv_cart_report' => [ 'VV_Vendor_Dashboard', 'render_cart_report' ], 'vv_withdrawal' => [ 'VV_Withdrawal', 'render_form' ], 'vv_bank_account' => [ 'VV_Withdrawal', 'render_bank_form' ], 'vv_vendor_store' => [ 'VV_Vendor_Store', 'render' ], 'vv_vendor_reviews' => [ 'VV_Reviews', 'render_form' ], 'vv_messages' => [ 'VV_Messages', 'render' ], ]; foreach ( $shortcodes as $tag => $cb ) add_shortcode( $tag, $cb ); foreach ( [ 'aistore_add_product' => 'vv_add_product', 'aistore_product_list' => 'vv_product_list', 'aistore_product_edit' => 'vv_product_edit', 'aistore_order_list' => 'vv_order_list', 'aistore_order_edit' => 'vv_order_edit', 'aistore_saksh_withdrawal_system'=> 'vv_withdrawal', 'aistore_bank_account' => 'vv_bank_account', ] as $old => $new ) { add_shortcode( $old, function( $atts ) use ( $new ) { return do_shortcode( '[' . $new . ']' ); } ); } $ep_map = [ 'vv-dashboard' => [ 'VV_Vendor_Dashboard', 'render' ], 'vv-products' => [ 'VV_Product_Form', 'render_list' ], 'vv-add-product' => [ 'VV_Product_Form', 'render_add' ], 'vv-orders' => [ 'VV_Order_Manager', 'render_list' ], 'vv-messages' => [ 'VV_Messages', 'render' ], 'vv-withdrawal' => [ 'VV_Withdrawal', 'render_form' ], 'vv-bank' => [ 'VV_Withdrawal', 'render_bank_form' ], 'vv-reviews' => [ 'VV_Reviews', 'render_vendor_reviews' ], 'cart-report' => [ 'VV_Vendor_Dashboard', 'render_cart_report' ], 'order-list' => [ 'VV_Order_Manager', 'render_list' ], 'product-list' => [ 'VV_Product_Form', 'render_list' ], 'product-add' => [ 'VV_Product_Form', 'render_add' ], 'product-details'=> [ 'VV_Product_Form', 'render_edit' ], 'order-details' => [ 'VV_Order_Manager', 'render_edit' ], 'withdrawal-request' => [ 'VV_Withdrawal', 'render_form' ], 'bank-account' => [ 'VV_Withdrawal', 'render_bank_form' ], ]; foreach ( $ep_map as $ep => $cb ) { add_action( 'woocommerce_account_' . $ep . '_endpoint', function() use ( $cb ) { if ( class_exists( $cb[0] ) && method_exists( $cb[0], $cb[1] ) ) echo call_user_func( $cb ); } ); } } public function add_endpoints() { foreach ( [ 'vv-dashboard','vv-products','vv-add-product','vv-orders', 'vv-messages','vv-withdrawal','vv-bank','vv-reviews', 'cart-report','order-list','product-list','product-add', 'product-details','order-details','withdrawal-request','bank-account', ] as $ep ) { add_rewrite_endpoint( $ep, EP_PAGES ); } $slug = get_option( 'vv_vendor_store_slug', 'vendor' ); add_rewrite_rule( '^' . $slug . '/([^/]+)/?$', 'index.php?vv_vendor_store=$matches[1]', 'top' ); add_rewrite_tag( '%vv_vendor_store%', '([^/]+)' ); } public function account_menu_items( $items ) { if ( get_option( 'vv_product_show_in_menu' ) !== 'yes' || ! VV_Helpers::is_vendor() ) return $items; $vi = [ 'vv-dashboard' => ' ' . __( 'Vendor Dashboard', 'vendorverse' ), 'vv-products' => ' ' . __( 'My Products', 'vendorverse' ), 'vv-add-product' => ' ' . __( 'Add Product', 'vendorverse' ), 'vv-orders' => ' '. __( 'My Orders', 'vendorverse' ), 'vv-messages' => ' ' . __( 'Messages', 'vendorverse' ), 'vv-withdrawal' => ' ' . __( 'Withdraw', 'vendorverse' ), 'vv-bank' => ' ' . __( 'Bank Account', 'vendorverse' ), ]; if ( get_option( 'vv_enable_reviews' ) === 'yes' ) { $vi['vv-reviews'] = ' ' . __( 'Reviews', 'vendorverse' ); } return array_slice( $items, 0, 5, true ) + $vi + array_slice( $items, 5, null, true ); } public function enqueue() { wp_enqueue_style( 'font-awesome', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css', [], '6.5.1' ); wp_enqueue_script( 'chart-js', 'https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js', [], '4.4.0', true ); wp_enqueue_style( 'vv-frontend', VENDORVERSE_URL . 'assets/css/frontend.css', [], VENDORVERSE_VERSION ); wp_enqueue_script( 'vv-frontend', VENDORVERSE_URL . 'assets/js/frontend.js', [ 'jquery', 'chart-js' ], VENDORVERSE_VERSION, true ); wp_localize_script( 'vv-frontend', 'vv', [ 'ajax' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'vv_ajax' ), 'rest_url' => rest_url( 'vendorverse/v1/' ), 'rest_nonce' => wp_create_nonce( 'wp_rest' ), 'currency' => get_woocommerce_currency_symbol(), 'is_vendor' => VV_Helpers::is_vendor() ? 1 : 0, 'user_id' => get_current_user_id(), 'products_url' => wc_get_account_endpoint_url( 'vv-products' ), 'i18n' => [ 'saving' => __( 'Saving…', 'vendorverse' ), 'saved' => __( 'Saved!', 'vendorverse' ), 'deleting' => __( 'Deleting…', 'vendorverse' ), 'confirm_del'=> __( 'Delete this product? This cannot be undone.', 'vendorverse' ), 'sending' => __( 'Sending…', 'vendorverse' ), 'error' => __( 'Something went wrong. Please try again.', 'vendorverse' ), ], ] ); } public function vendor_store_template() { $slug = get_query_var( 'vv_vendor_store' ); if ( ! $slug ) return; add_filter( 'the_content', function() use ( $slug ) { return do_shortcode( '[vv_vendor_store slug="' . esc_attr( $slug ) . '"]' ); } ); } }