* Display a widget with a link to donate to a campaign. * * Override this template by copying it to yourtheme/charitable/widgets/donate.php * * @author Studio 164a * @since 1.0.0 */ if (!defined('ABSPATH')) { exit; } // Exit if accessed directly if (!charitable_is_campaign_page() && 'current' == $view_args['campaign_id']) { return; } $widget_title = apply_filters('widget_title', $view_args['title']); $campaign_id = 'current' == $view_args['campaign_id'] ? get_the_ID() : $view_args['campaign_id']; $campaign = charitable_get_campaign($campaign_id); if ($campaign->has_ended()) { return; } $suggested_donations = $campaign->get_suggested_donations(); if (empty($suggested_donations) && !$campaign->get('allow_custom_donations')) { return; } echo $view_args['before_widget']; if (!empty($widget_title)) { echo $view_args['before_title'] . $widget_title . $view_args['after_title']; } $form = new Charitable_Donation_Amount_Form($campaign); $form->render(); echo $view_args['after_widget'];
/** * Save a donation. * * @return void * @access public * @static * @since 1.0.0 */ public static function make_donation_streamlined() { $processor = self::get_instance(); $campaign = $processor->get_campaign(); if (!$campaign) { return; } /** * @hook charitable_before_process_donation_amount_form */ do_action('charitable_before_process_donation_amount_form', $processor); /* Validate the form submission and retrieve the values. */ $form = new Charitable_Donation_Amount_Form($campaign); if (!$form->validate_submission()) { return; } $submitted = $form->get_donation_values(); charitable_get_session()->add_donation($submitted['campaign_id'], $submitted['amount']); /** * @hook charitable_after_process_donation_amount_form */ do_action('charitable_after_process_donation_amount_form', $processor, $submitted); /** * If we get this far, forward the user through to the donation page. */ wp_safe_redirect(charitable_get_permalink('campaign_donation_page', array('campaign_id' => $submitted['campaign_id']))); die; }