[ '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 ) . '"]' );
} );
}
}