II. Construct
__construct()
public function __construct() { // Define gateway id $this->unique_id = 'sample_withdrawal'; /* ADMIN */ // Add gateway option to admin add_action( 'wpj_after_admin_paypal_settings_fields', function() { if ( class_exists( 'Redux' ) ) { Redux::setSection( 'jobster_settings', array( 'id' => 'sample-withdrawal-settings', 'title' => __( 'Sample Withdrawal', 'wpjobster-sample' ), 'desc' => __( 'Sample Withdrawal Settings', 'wpjobster-sample' ), 'subsection' => true, 'fields' => wpj_get_gateway_default_fields( array( 'gateway_id' => 'sample_withdrawal', 'gateway_name' => 'Sample Withdrawal', 'gateway_version' => WPJ_SAMPLE_WITHDRAWAL_VERSION, 'enable' => false, 'enable_sandbox' => false, 'exclude_payment_type' => array( 'job_purchase', 'topup', 'featured', 'withdraw', 'custom_extra', 'tips', 'subscription' ), 'public_key' => false, 'secret_key' => false, 'button_name' => false, 'succes_page_url' => false, 'fail_page_url' => false, 'new_fields' => array( array( 'unique_id' => 'wpjobster_sample_withdrawal_enable', 'type' => 'select', 'title' => __( 'Enable', 'wpjobster-sample' ), 'options' => array( 'disabled' => __( 'Disabled', 'wpjobster-sample' ), 'manual' => __( 'Manual', 'wpjobster-sample' ), 'automatic' => __( 'Automatic', 'wpjobster-sample' ), 'both' => __( 'Both', 'wpjobster-sample' ) ), 'default' => 'both' ), array( 'unique_id' => 'wpjobster_sample_withdrawal_enablesandbox', 'type' => 'switch', 'title' => __( 'Enable sandbox', 'wpjobster-sample' ), 'default' => false, 'required' => array( 'wpjobster_sample_withdrawal_enable', '=', array( 'automatic', 'both' ) ) ), array( 'unique_id' => 'sample-withdrawal-keys-settings-section', 'type' => 'section', 'title' => esc_html__( 'Keys', 'wpjobster-sample' ), 'indent' => true, ), array( 'unique_id' => 'wpjobster_sample_client_id', 'type' => 'text', 'title' => __( 'Sample client ID', 'wpjobster-sample' ), ), array( 'unique_id' => 'wpjobster_sample_secret_key', 'type' => 'text', 'title' => __( 'Sample secret key', 'wpjobster-sample' ) ) ) ) ) ) ); } }); // Save options for manual and automatic add_action( 'redux/options/jobster_settings/saved', array( $this, 'saveExtraAdminOptions' ) ); // Show 'Mark automatically as completed' button to admin orders - pending tab only add_action( 'wpj_show_hide_automatic_withdrawal_button_filter', array( $this, 'displayAdminAutomaticWithdrawalButton' ), 10, 2 ); // Show 'Process withdrawal' button to admin orders - pending tab only add_action( 'wpj_after_admin_orders_tfoot_buttons', array( $this, 'displayProcessPaymentRequestButton' ) ); // Process withdrawal order add_action( 'wpj_before_admin_orders_content', array( $this, 'processPaymentRequest' ), 11 ); /* WITHDRAWAL */ // Add gateway to withdrawal gateways add_filter( 'wpj_withdrawals_gateways_filter', function( $gateways ) { array_push( $gateways, 'sample' ); return $gateways; }, 10, 1 ); add_filter( 'wpj_only_withdrawals_gateways_filter', function( $gateways ) { array_push( $gateways, 'sample' ); return $gateways; }, 10, 1 ); add_filter( 'wpj_withdrawals_gateways_filter', function( $gateways ) { array_push( $gateways, 'sample_automatic' ); return $gateways; }, 10, 1 ); add_filter( 'wpj_only_withdrawals_gateways_filter', function( $gateways ) { array_push( $gateways, 'sample_automatic' ); return $gateways; }, 10, 1 ); // Set gateway withdrawal name to database add_filter( 'wpjobster_withdraw_method_filter', function ( $method ) { if ( $_POST['method'] == 'sample_withdraw' ) $method = "Sample"; return $method; }); /* FRONT */ // Add gateway to payments page > request withdrawal list add_filter( 'wpj_withdrawals_gateways_info_filter', array( $this, 'addGatewayToPaymentsWithdrawalList' ) ); // Add details input to payments page > request withdrawal list add_action( 'wpj_after_withdrawal_gateways_list_details_input', array( $this, 'addGatewayDetailsInputToPaymentsWithdrawalList' ), 10, 1 ); // Gateway inline styles - use this action if you need to add small styles for your gateway add_action( 'wp_enqueue_scripts', function() { $style = '.your-class{display:block;}'; wp_add_inline_style( 'semantic-ui-css', $style ); }); // Shortcode settings fields - use this shortcode to show the settings fields to theme settings page add_shortcode( 'sample_settings_fields', array( $this, 'addGatewayDetailsInputToSettingsPaymentsList' ) ); /* SETTINGS */ // Set plugin compatibility - prevents the plugin from activating on other themes add_action( 'admin_notices', array( $this, 'checkCompatibility' ) ); // Set plugin action link add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), function ( $links ) { return function_exists( 'wpj_generate_settings_link' ) ? array_merge( array( wpj_generate_settings_link( 'sample-withdrawal' ) ), $links ) : $links; }); // Set plugin textdomain add_action( 'plugins_loaded', function () { load_plugin_textdomain( 'wpjobster-sample', false, trailingslashit( dirname( plugin_basename( __FILE__ ) ) ) ); }, 0 ); // Gateway name translatable add_filter( 'wpjobster_database_strings_filter', function( $strings ) { $strings['sample_withdrawal'] = _x( 'Sample Withdrawal', 'Sample Withdrawal gateway', 'wpjobster-sample-withdrawal' ); return $strings; }, 10, 1 ); // Add gateway to all plugins list add_filter( 'wpj_withdrawal_gateways_plugins_folder_list_filter', function( $plugins ) { $plugins[] = 'wpjobster-sample-withdrawal'; return $plugins; }); }
$this->unique_id - This is the lowercase name of your gateway and it really needs to be unique.
checkCompatibility()
public function checkCompatibility() { if ( ! function_exists( 'wpj_get_wpjobster_plugins_list' ) && ! defined( 'wpjobster_VERSION' ) ) $error = sprintf( __( 'The current theme is not compatible with the %s gateway. Activate the WPJobster theme before installing this plugin.', 'wpjobster' ), $this->unique_id ); if ( ! empty( $error ) && is_plugin_active( plugin_basename( __FILE__ ) ) ) { deactivate_plugins( plugin_basename( __FILE__ ), true ); ?> <div data-dismissible="compatibility-theme-notice" class="notice notice-error is-dismissible"><p><?php echo $error; ?></p></div> <?php if ( isset( $_GET['activate'] ) ) unset( $_GET['activate'] ); } do_action( 'wpj_after_plugin_compatibility_errors', WPJ_SAMPLE_WITHDRAWAL_VERSION, 'Sample Withdrawal', plugin_basename( __FILE__ ), WPJ_SAMPLE_WITHDRAWAL_REQUIRED_THEME_VERSION ); }
This function checks if the gateway is compatible with the theme activated on the site, and if not, it will display a message and will not allow the plugin to be activated until the WPJobster theme is activated