Created
April 15, 2025 16:15
-
-
Save devAsadNur/87052e8dd77aa5e22e55715534001efa to your computer and use it in GitHub Desktop.
Custom fields to the bank payment method in Dokan
This file contains hidden or 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
<?php | |
/** | |
* @var string $ac_name | |
* @var string $ac_type | |
* @var string $routing_number | |
* @var string $ac_number | |
* @var string $bank_name | |
* @var string $bank_addr | |
* @var string $iban | |
* @var string $swift | |
* @var string $custom_1 | |
* @var string $custom_2 | |
* @var string $save_or_add_btn_text | |
* @var array $required_fields | |
* @var array $fields_placeholders | |
* @var array $connected | |
*/ | |
?> | |
<div class="dokan-bank-settings-template"> | |
<div class="dokan-form-group"> | |
<div> | |
<label for="ac_name"><?php echo ! empty( $fields_placeholders['ac_name']['label'] ) ? esc_attr( $fields_placeholders['ac_name']['label'] ) : ''; ?>adsf </label> | |
</div> | |
<div class="dokan-w10"> | |
<input id='ac_name' name="settings[bank][ac_name]" value="<?php echo esc_attr( $ac_name ); ?>" class="dokan-form-control" placeholder="<?php echo ! empty( $fields_placeholders['ac_name']['placeholder'] ) ? esc_attr( $fields_placeholders['ac_name']['placeholder'] ) : ''; ?>" type="text" <?php echo empty( $required_fields['ac_name'] ) ? '' : 'required'; ?> > | |
<span class="error-container"> | |
<?php | |
// phpcs:ignore | |
if ( ! empty( $_POST['error_ac_name'] ) ) { | |
echo '<span class="required">' . esc_html__( 'This is required', 'dokan-lite' ) . '</span>'; | |
} | |
?> | |
</span> | |
</div> | |
</div> | |
<div class="dokan-form-group"> | |
<div> | |
<label for="ac_type"><?php echo ! empty( $fields_placeholders['ac_type']['label'] ) ? esc_attr( $fields_placeholders['ac_type']['label'] ) : ''; ?> </label> | |
</div> | |
<div class="dokan-w10"> | |
<select id='ac_type' name="settings[bank][ac_type]" class="dokan-form-control" <?php echo empty( $required_fields['ac_type'] ) ? '' : 'required'; ?>> | |
<option value="" <?php selected( '', $ac_type ); ?> > <?php esc_html_e( 'Please Select...', 'dokan-lite' ); ?> </option> | |
<option value="personal" <?php selected( 'personal', $ac_type ); ?> > <?php esc_html_e( 'Personal', 'dokan-lite' ); ?> </option> | |
<option value="business" <?php selected( 'business', $ac_type ); ?> > <?php esc_html_e( 'Business', 'dokan-lite' ); ?> </option> | |
</select> | |
<span class="error-container"> | |
<?php | |
// phpcs:ignore | |
if ( ! empty( $_POST['error_ac_type'] ) ) { | |
echo '<span class="required">' . esc_html__( 'This is required', 'dokan-lite' ) . '</span>'; | |
} | |
?> | |
</span> | |
</div> | |
</div> | |
<div class="dokan-form-group"> | |
<div> | |
<label id='ac_number'><?php echo ! empty( $fields_placeholders['ac_number']['label'] ) ? esc_attr( $fields_placeholders['ac_number']['label'] ) : ''; ?> </label> | |
</div> | |
<div class="dokan-w10"> | |
<input name="settings[bank][ac_number]" value="<?php echo esc_attr( $ac_number ); ?>" class="dokan-form-control" placeholder="<?php echo ! empty( $fields_placeholders['ac_number']['placeholder'] ) ? esc_attr( $fields_placeholders['ac_number']['placeholder'] ) : ''; ?>" type="text" <?php echo empty( $required_fields['ac_number'] ) ? '' : 'required'; ?>> | |
<span class="error-container"> | |
<?php | |
// phpcs:ignore | |
if ( ! empty( $_POST['error_ac_number'] ) ) { | |
echo '<span class="required">' . esc_html__( 'This is required', 'dokan-lite' ) . '</span>'; | |
} | |
?> | |
</span> | |
</div> | |
</div> | |
<div class="dokan-form-group"> | |
<div> | |
<label id='custom_1'><?php echo ! empty( $fields_placeholders['custom_1']['label'] ) ? esc_attr( $fields_placeholders['custom_1']['label'] ) : ''; ?> </label> | |
</div> | |
<div class="dokan-w10"> | |
<input name="settings[bank][custom_1]" value="<?php echo esc_attr( $custom_1 ); ?>" class="dokan-form-control" placeholder="<?php echo ! empty( $fields_placeholders['custom_1']['placeholder'] ) ? esc_attr( $fields_placeholders['custom_1']['placeholder'] ) : ''; ?>" type="text" <?php echo empty( $required_fields['custom_1'] ) ? '' : 'required'; ?>> | |
<span class="error-container"> | |
<?php | |
// phpcs:ignore | |
if ( ! empty( $_POST['error_ac_number'] ) ) { | |
echo '<span class="required">' . esc_html__( 'This is required', 'dokan-lite' ) . '</span>'; | |
} | |
?> | |
</span> | |
</div> | |
</div> | |
<div class="dokan-form-group"> | |
<div> | |
<label id='custom_2'><?php echo ! empty( $fields_placeholders['custom_2']['label'] ) ? esc_attr( $fields_placeholders['custom_2']['label'] ) : ''; ?> </label> | |
</div> | |
<div class="dokan-w10"> | |
<input name="settings[bank][custom_2]" value="<?php echo esc_attr( $custom_2 ); ?>" class="dokan-form-control" placeholder="<?php echo ! empty( $fields_placeholders['custom_2']['placeholder'] ) ? esc_attr( $fields_placeholders['custom_2']['placeholder'] ) : ''; ?>" type="text" <?php echo empty( $required_fields['custom_2'] ) ? '' : 'required'; ?>> | |
<span class="error-container"> | |
<?php | |
// phpcs:ignore | |
if ( ! empty( $_POST['error_ac_number'] ) ) { | |
echo '<span class="required">' . esc_html__( 'This is required', 'dokan-lite' ) . '</span>'; | |
} | |
?> | |
</span> | |
</div> | |
</div> | |
<div class="dokan-form-group"> | |
<div> | |
<label><?php echo ! empty( $fields_placeholders['routing_number']['label'] ) ? esc_attr( $fields_placeholders['routing_number']['label'] ) : ''; ?> </label> | |
</div> | |
<div class="dokan-w10"> | |
<input name="settings[bank][routing_number]" value="<?php echo esc_attr( $routing_number ); ?>" class="dokan-form-control" placeholder="<?php echo ! empty( $fields_placeholders['routing_number']['placeholder'] ) ? esc_attr( $fields_placeholders['routing_number']['placeholder'] ) : ''; ?>" type="text" <?php echo empty( $required_fields['routing_number'] ) ? '' : 'required'; ?>> | |
<span class="error-container"> | |
<?php | |
// phpcs:ignore | |
if ( ! empty( $_POST['error_routing_number'] ) ) { | |
echo '<span class="required">' . esc_html__( 'This is required', 'dokan-lite' ) . '</span>'; | |
} | |
?> | |
</span> | |
</div> | |
</div> | |
<div class="dokan-form-group"> | |
<div> | |
<label><?php echo ! empty( $fields_placeholders['bank_name']['label'] ) ? esc_attr( $fields_placeholders['bank_name']['label'] ) : ''; ?> </label> | |
</div> | |
<div class="dokan-w10"> | |
<input name="settings[bank][bank_name]" value="<?php echo esc_attr( $bank_name ); ?>" class="dokan-form-control" placeholder="<?php echo ! empty( $fields_placeholders['bank_name']['placeholder'] ) ? esc_attr( $fields_placeholders['bank_name']['placeholder'] ) : ''; ?>" type="text" <?php echo empty( $required_fields['bank_name'] ) ? '' : 'required'; ?>> | |
<span class="error-container"> | |
<?php | |
// phpcs:ignore | |
if ( ! empty( $_POST['error_bank_name'] ) ) { | |
echo '<span class="required">' . esc_html__( 'This is required', 'dokan-lite' ) . '</span>'; | |
} | |
?> | |
</span> | |
</div> | |
</div> | |
<div class="dokan-form-group"> | |
<div> | |
<label><?php echo ! empty( $fields_placeholders['bank_addr']['label'] ) ? esc_attr( $fields_placeholders['bank_addr']['label'] ) : ''; ?> </label> | |
</div> | |
<div class="dokan-w10"> | |
<textarea name="settings[bank][bank_addr]" rows="5" class="dokan-form-control" placeholder="<?php echo ! empty( $fields_placeholders['bank_addr']['placeholder'] ) ? esc_attr( $fields_placeholders['bank_addr']['placeholder'] ) : ''; ?>" <?php echo empty( $required_fields['bank_addr'] ) ? '' : 'required'; ?>><?php echo esc_html( $bank_addr ); ?></textarea> | |
<span class="error-container"> | |
<?php | |
// phpcs:ignore | |
if ( ! empty( $_POST['error_bank_addr'] ) ) { | |
echo '<span class="required">' . esc_html__( 'This is required', 'dokan-lite' ) . '</span>'; | |
} | |
?> | |
</span> | |
</div> | |
</div> | |
<div class="dokan-form-group"> | |
<div> | |
<label><?php echo ! empty( $fields_placeholders['iban']['label'] ) ? esc_attr( $fields_placeholders['iban']['label'] ) : ''; ?> </label> | |
</div> | |
<div class="dokan-w10"> | |
<input name="settings[bank][iban]" value="<?php echo esc_attr( $iban ); ?>" class="dokan-form-control" placeholder="<?php echo ! empty( $fields_placeholders['iban']['placeholder'] ) ? esc_attr( $fields_placeholders['iban']['placeholder'] ) : ''; ?>" type="text" <?php echo empty( $required_fields['iban'] ) ? '' : 'required'; ?>> | |
<span class="error-container"> | |
<?php | |
// phpcs:ignore | |
if ( ! empty( $_POST['error_iban'] ) ) { | |
echo '<span class="required">' . esc_html__( 'This is required', 'dokan-lite' ) . '</span>'; | |
} | |
?> | |
</span> | |
</div> | |
</div> | |
<div class="dokan-form-group"> | |
<div> | |
<label><?php echo ! empty( $fields_placeholders['swift']['label'] ) ? esc_attr( $fields_placeholders['swift']['label'] ) : ''; ?> </label> | |
</div> | |
<div class="dokan-w10"> | |
<input value="<?php echo esc_attr( $swift ); ?>" name="settings[bank][swift]" class="dokan-form-control" placeholder="<?php echo ! empty( $fields_placeholders['swift']['placeholder'] ) ? esc_attr( $fields_placeholders['swift']['placeholder'] ) : ''; ?>" type="text" <?php echo empty( $required_fields['swift'] ) ? '' : 'required'; ?>> | |
<span class="error-container"> | |
<?php | |
// phpcs:ignore | |
if ( ! empty( $_POST['error_swift'] ) ) { | |
echo '<span class="required">' . esc_html__( 'This is required', 'dokan-lite' ) . '</span>'; | |
} | |
?> | |
</span> | |
</div> | |
</div> | |
<div class="dokan-form-group dokan-text-left"> | |
<img alt="<?php esc_attr_e( 'bank check', 'dokan-lite' ); ?>" src="<?php echo esc_url( DOKAN_PLUGIN_ASSEST . '/images/withdraw-methods/bank-check.png' ); ?>"/> | |
</div> | |
<div class="dokan-form-group dokan-text-left"> | |
<input id="declaration" name="settings[bank][declaration]" checked type="checkbox"/> | |
<label for="declaration"> | |
<?php echo ! empty( $fields_placeholders['declaration']['label'] ) ? esc_attr( $fields_placeholders['declaration']['label'] ) : ''; ?> | |
</label> | |
</div> | |
<?php if ( ! empty( $fields_placeholders['form_caution']['label'] ) || ! empty( $fields_placeholders['form_caution']['placeholder'] ) ) : ?> | |
<div class="data-warning"> | |
<div class="left-icon-container"> | |
<i class="fa fa-info-circle fa-2x" aria-hidden="true"></i> | |
</div> | |
<div class="vr-separator"></div> | |
<div class="dokan-text-left"> | |
<?php if ( ! empty( $fields_placeholders['form_caution']['label'] ) ) : ?> | |
<span class="display-block"><b><?php echo ! empty( $fields_placeholders['form_caution']['label'] ) ? esc_attr( $fields_placeholders['form_caution']['label'] ) : ''; ?></b></span> | |
<br/> | |
<?php endif; ?> | |
<span class="display-block"><?php echo ! empty( $fields_placeholders['form_caution']['placeholder'] ) ? esc_attr( $fields_placeholders['form_caution']['placeholder'] ) : ''; ?></span> | |
</div> | |
</div> | |
<?php endif; ?> | |
<p class="bottom-note"></p> | |
<?php if ( ! isset( $_GET['page'] ) || 'dokan-seller-setup' !== sanitize_text_field( wp_unslash( $_GET['page'] ) ) ) : // phpcs:ignore ?> | |
<div class="bottom-actions"> | |
<button class="ajax_prev save dokan-btn dokan-btn-theme" type="submit" name="dokan_update_payment_settings"> | |
<?php echo esc_html( $save_or_add_btn_text ); ?> | |
</button> | |
<a href="<?php echo esc_url( dokan_get_navigation_url( 'settings/payment' ) ); ?>"> | |
<?php esc_html_e( 'Cancel', 'dokan-lite' ); ?> | |
</a> | |
<input type="hidden" name="dokan_update_payment_settings"> | |
<button class="ajax_prev disconnect dokan_payment_disconnect_btn dokan-btn dokan-btn-danger <?php echo $connected ? '' : 'dokan-hide'; ?>" type="button" name="settings[bank][disconnect]"> | |
<?php esc_html_e( 'Disconnect', 'dokan-lite' ); ?> | |
</button> | |
</div> | |
<?php endif; ?> | |
</div> |
This file contains hidden or 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
/** | |
* Callback for Bank in store settings | |
* | |
* @param array $store_settings | |
* | |
* @return void | |
*/ | |
function custom_dokan_withdraw_method_bank( $store_settings ) { | |
$args = [ | |
'ac_name' => isset( $store_settings['payment']['bank']['ac_name'] ) ? $store_settings['payment']['bank']['ac_name'] : '', | |
'ac_number' => isset( $store_settings['payment']['bank']['ac_number'] ) ? $store_settings['payment']['bank']['ac_number'] : '', | |
'bank_name' => isset( $store_settings['payment']['bank']['bank_name'] ) ? $store_settings['payment']['bank']['bank_name'] : '', | |
'bank_addr' => isset( $store_settings['payment']['bank']['bank_addr'] ) ? $store_settings['payment']['bank']['bank_addr'] : '', | |
'routing_number' => isset( $store_settings['payment']['bank']['routing_number'] ) ? $store_settings['payment']['bank']['routing_number'] : '', | |
'iban' => isset( $store_settings['payment']['bank']['iban'] ) ? $store_settings['payment']['bank']['iban'] : '', | |
'swift' => isset( $store_settings['payment']['bank']['swift'] ) ? $store_settings['payment']['bank']['swift'] : '', | |
'custom_1' => isset( $store_settings['payment']['bank']['custom_1'] ) ? $store_settings['payment']['bank']['custom_1'] : '', | |
'custom_2' => isset( $store_settings['payment']['bank']['custom_2'] ) ? $store_settings['payment']['bank']['custom_2'] : '', | |
'ac_type' => isset( $store_settings['payment']['bank']['ac_type'] ) ? $store_settings['payment']['bank']['ac_type'] : '', | |
'save_or_add_btn_text' => isset( $store_settings['is_edit_mode'] ) && $store_settings['is_edit_mode'] ? __( 'Save', 'dokan-lite' ) : __( 'Add Account', 'dokan-lite' ), | |
]; | |
$args['required_fields'] = dokan_bank_payment_required_fields(); | |
$args['fields_placeholders'] = dokan_bank_payment_fields_placeholders(); | |
$args['connected'] = false; | |
// If any required field is empty in args, connected is false and | |
// by default it is false because if there are no require field then the account is not connected. | |
foreach ( $args['required_fields'] as $key => $required_field ) { | |
if ( ! empty( $args[ $key ] ) ) { | |
$args['connected'] = true; | |
} else { | |
$args['connected'] = false; | |
break; | |
} | |
} | |
dokan_get_template_part( 'settings/custom-bank-payment-method-settings', '', $args ); | |
} |
This file contains hidden or 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
add_filter( 'dokan_withdraw_methods', [ $this, 'filter_existing_withdraw_methods' ] ); | |
add_filter( 'dokan_bank_payment_fields_placeholders', [ $this, 'filter_dokan_bank_payment_fields_placeholders' ] ); | |
add_action( 'dokan_store_profile_settings_args', [ $this, 'filter_dokan_store_profile_settings_args' ], 10, 2 ); | |
public function filter_existing_withdraw_methods( $methods ) { | |
$methods['bank'] = [ | |
'title' => __( 'Bank Transfer', 'dokan-lite' ), | |
'callback' => 'custom_dokan_withdraw_method_bank', | |
'apply_charge' => true, | |
]; | |
return $methods; | |
} | |
public function filter_dokan_bank_payment_fields_placeholders( $fields ) { | |
$fields['custom_1'] = [ | |
'label' => __( 'Custom Field 1', 'dokan-lite' ), | |
'placeholder' => __( 'Enter your custom field 1', 'dokan-lite' ), | |
]; | |
$fields['custom_2'] = [ | |
'label' => __( 'Custom Field 2', 'dokan-lite' ), | |
'placeholder' => __( 'Enter your custom field 2', 'dokan-lite' ), | |
]; | |
return $fields; | |
} | |
public function filter_dokan_store_profile_settings_args( $dokan_settings, $store_id ) { | |
$custom_field_1 = isset( $_POST['settings']['bank']['custom_1'] ) ? sanitize_text_field( wp_unslash( $_POST['settings']['bank']['custom_1'] ) ) : ''; | |
$custom_field_2 = isset( $_POST['settings']['bank']['custom_2'] ) ? sanitize_text_field( wp_unslash( $_POST['settings']['bank']['custom_2'] ) ) : ''; | |
$dokan_settings['payment']['bank']['custom_1'] = $custom_field_1; | |
$dokan_settings['payment']['bank']['custom_2'] = $custom_field_2; | |
return $dokan_settings; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment