Last active
April 20, 2021 12:09
-
-
Save alamgircsebd/0049ac314267abfb6317c93c88667477 to your computer and use it in GitHub Desktop.
Dokan add new custom withdraw methods
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Dokan add new withdraw method | |
* | |
* @param array $methods | |
* | |
* @return array $methods | |
*/ | |
function dokan_add_new_withdraw_method( $methods ) { | |
$methods['custom'] = [ | |
'title' => __( 'Custom', 'dokan-lite' ), | |
'callback' => 'dokan_add_new_withdraw_method_settings' | |
]; | |
return $methods; | |
} | |
add_filter( 'dokan_withdraw_methods', 'dokan_add_new_withdraw_method' ); | |
/** | |
* Dokan add new withdraw method settings | |
* | |
* @param array $store_settings | |
* | |
* @return void | |
*/ | |
function dokan_add_new_withdraw_method_settings( $store_settings ) { | |
global $current_user; | |
$email = isset( $store_settings['payment']['custom']['email'] ) ? esc_attr( $store_settings['payment']['custom']['email'] ) : $current_user->user_email; ?> | |
<div class="dokan-form-group"> | |
<div class="dokan-w8"> | |
<div class="dokan-input-group"> | |
<span class="dokan-input-group-addon"><?php esc_html_e( 'E-mail', 'dokan-lite' ); ?></span> | |
<input value="<?php echo esc_attr( $email ); ?>" name="settings[custom][email]" class="dokan-form-control email" placeholder="[email protected]" type="text"> | |
</div> | |
</div> | |
</div> | |
<?php | |
} | |
/** | |
* Dokan save custom payment method data for vendors | |
* | |
* @param int $store_id | |
* @param array $dokan_settings | |
* | |
* @return void | |
*/ | |
function dokan_save_custom_payment_method( $store_id, $dokan_settings ) { | |
$post_data = wp_unslash( $_POST ); | |
if ( isset( $post_data['settings']['custom'] ) ) { | |
$dokan_settings['payment']['custom'] = array( | |
'email' => sanitize_email( $post_data['settings']['custom']['email'] ), | |
); | |
} | |
update_user_meta( $store_id, 'dokan_profile_settings', $dokan_settings ); | |
} | |
add_action( 'dokan_store_profile_saved', 'dokan_save_custom_payment_method', 10, 2 ); | |
/** | |
* Dokan seller active custom withdraw methods | |
* | |
* @param array $active_payment_methods | |
* @param int $vendor_id | |
* | |
* @return array $active_payment_methods | |
*/ | |
function dokan_seller_active_custom_withdraw_methods( $active_payment_methods, $vendor_id ) { | |
$store_info = dokan_get_store_info($vendor_id); | |
$custom = isset( $store_info['payment']['custom']['email'] ) && $store_info['payment']['custom']['email'] !== false ? 'custom' : ''; | |
$active_payment_methods[] = $custom; | |
return $active_payment_methods; | |
} | |
add_filter( 'dokan_get_seller_active_withdraw_methods', 'dokan_seller_active_custom_withdraw_methods', 10, 2 ); | |
/** | |
* Dokan admin add custom withdraw method details | |
* | |
* @return void | |
*/ | |
function dokan_admin_withdraw_list_add_custom_method() { | |
?> | |
<script> | |
var hooks; | |
function getCustomPaymentDetails( details, method, data ) { | |
if (data[method] !== undefined) { | |
if ('custom' === method) { | |
details = data[method].email || ''; | |
} | |
} | |
return details; | |
} | |
dokan.hooks.addFilter( 'dokan_get_payment_details', 'getCustomPaymentDetails', getCustomPaymentDetails, 33, 3 ); | |
</script> | |
<?php | |
} | |
add_action( 'admin_print_footer_scripts', 'dokan_admin_withdraw_list_add_custom_method', 99 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment