Advertisement
dmnort

GIVE Modifications

Dec 14th, 2018
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.20 KB | None | 0 0
  1. // Change label on invoice page
  2. add_filter("give_donation_total_label", "cfa_invoice_label");
  3. function cfa_invoice_label($label) {
  4.     if (is_page('invoice-payment')) {
  5.         return "Invoice Total";
  6.     } elseif(is_page('membership')){
  7.         return "Membership Fee";
  8.     }
  9.  
  10.     return $label;
  11. }
  12.  
  13. // Documentation: https://givewp.com/documentation/developers/how-to-create-custom-form-fields/
  14.  
  15.  
  16. /*
  17. ame, mailing address, telephone number and comments.
  18. */
  19.  
  20. // Add fields
  21. add_action( 'give_donation_form_after_personal_info', 'cfa_add_fields' );
  22. function cfa_add_fields($form_id) { ?>
  23.     <div id="give-phone-wrap" class="form-row form-row-responsive">
  24.         <label class="give-label" for="give-phone">
  25.             <?php _e( 'Phone:', 'give' ); ?>
  26.             <span class="give-required-indicator">*</span>
  27.         </label>
  28.         <input class="give-input required" type="tel" name="give-phone" id="give-phone" placeholder="(555) 555-5555" value="" required="" aria-required="true" />
  29.     </div>
  30.  
  31.     <div id="give-address-wrap" class="clearfix">
  32.  
  33.         <div class="clearfix">
  34.             <div class="form-row form-row-first form-row-responsive">
  35.                 <label class="give-label" for="give-street1">
  36.                     <?php _e( 'Street 1:', 'give' ); ?>
  37.                     <span class="give-required-indicator">*</span>
  38.                 </label>
  39.                 <input class="give-input required" type="text" name="give-street1" id="give-street1" placeholder="Street 1" value="" required="" aria-required="true" />
  40.             </div>
  41.  
  42.             <div class="form-row form-row-last form-row-responsive">
  43.                 <label class="give-label" for="give-street2">
  44.                     <?php _e( 'Street 2:', 'give' ); ?>
  45.  
  46.                 </label>
  47.                 <input class="give-input required" type="text" name="give-street2" id="give-street2" placeholder="Street 2" value="" />
  48.             </div> 
  49.         </div>
  50.  
  51.         <div class="form-row form-row-responsive">
  52.             <label class="give-label" for="give-city">
  53.                 <?php _e( 'City:', 'give' ); ?>
  54.                 <span class="give-required-indicator">*</span>
  55.             </label>
  56.             <input class="give-input required" type="text" name="give-city" id="give-city" placeholder="City" value="" required="" aria-required="true" />
  57.         </div>
  58.  
  59.         <div class="form-row form-row-first form-row-responsive">
  60.             <label class="give-label" for="give-state">
  61.                 <?php _e( 'State:', 'give' ); ?>
  62.                 <span class="give-required-indicator">*</span>
  63.             </label>
  64.             <select class="give-input required" name="give-state" id="give-state" placeholder="State"  value="" required="" aria-required="true">
  65.                 <option value="AL">Alabama</option>
  66.                 <option value="AK">Alaska</option>
  67.                 <option value="AZ">Arizona</option>
  68.                 <option value="AR">Arkansas</option>
  69.                 <option value="CA">California</option>
  70.                 <option value="CO">Colorado</option>
  71.                 <option value="CT">Connecticut</option>
  72.                 <option value="DE">Delaware</option>
  73.                 <option value="FL">Florida</option>
  74.                 <option value="GA">Georgia</option>
  75.                 <option value="HI">Hawaii</option>
  76.                 <option value="ID">Idaho</option>
  77.                 <option value="IL">Illinois</option>
  78.                 <option value="IN">Indiana</option>
  79.                 <option value="IA">Iowa</option>
  80.                 <option value="KS">Kansas</option>
  81.                 <option value="KY">Kentucky</option>
  82.                 <option value="LA">Louisiana</option>
  83.                 <option value="ME">Maine</option>
  84.                 <option value="MD">Maryland</option>
  85.                 <option value="MA">Massachusetts</option>
  86.                 <option value="MI">Michigan</option>
  87.                 <option value="MN">Minnesota</option>
  88.                 <option value="MS">Mississippi</option>
  89.                 <option value="MO">Missouri</option>
  90.                 <option value="MT">Montana</option>
  91.                 <option value="NE">Nebraska</option>
  92.                 <option value="NV">Nevada</option>
  93.                 <option value="NH">New Hampshire</option>
  94.                 <option value="NJ">New Jersey</option>
  95.                 <option value="NM">New Mexico</option>
  96.                 <option value="NY">New York</option>
  97.                 <option value="NC">North Carolina</option>
  98.                 <option value="ND">North Dakota</option>
  99.                 <option value="OH">Ohio</option>
  100.                 <option value="OK">Oklahoma</option>
  101.                 <option value="OR">Oregon</option>
  102.                 <option value="PA">Pennsylvania</option>
  103.                 <option value="RI">Rhode Island</option>
  104.                 <option value="SC">South Carolina</option>
  105.                 <option value="SD">South Dakota</option>
  106.                 <option value="TN">Tennessee</option>
  107.                 <option value="TX">Texas</option>
  108.                 <option value="UT">Utah</option>
  109.                 <option value="VT">Vermont</option>
  110.                 <option value="VA">Virginia</option>
  111.                 <option value="WA">Washington</option>
  112.                 <option value="WV">West Virginia</option>
  113.                 <option value="WI">Wisconsin</option>
  114.                 <option value="WY">Wyoming</option>
  115.             </select>
  116.         </div>
  117.    
  118.         <div class="form-row form-row-last form-row-responsive">
  119.             <label class="give-label" for="give-zip">
  120.                 <?php _e( 'Zipcode:', 'give' ); ?>
  121.                 <span class="give-required-indicator">*</span>
  122.             </label>
  123.             <input class="give-input required" type="text" pattern="[0-9]+" name="give-zip" id="give-zip" placeholder="Zipcode" value="" required="" aria-required="true" />
  124.         </div>
  125.     </div>
  126.  
  127.  
  128.     <div id="give-comments-wrap" class="form-row form-row-responsive">
  129.         <label class="give-label" for="give-comments">
  130.             <?php _e( 'Comments:', 'give' ); ?>
  131.         </label>
  132.         <textarea class="give-input required" name="give-comments" id="give-comments" placeholder="Comments"></textarea>
  133.     </div>
  134.  
  135.  
  136. <?php }
  137.  
  138. // Validate fields
  139. add_action( 'give_checkout_error_checks', 'cfa_validate_custom_fields', 10, 2 );
  140. function cfa_validate_custom_fields( $valid_data, $data ) {
  141.  
  142.     /*
  143.         $fields = array(
  144.             'give-phone',
  145.             'give-street1',
  146.             'give-street2',
  147.             'give-state',
  148.             'give-zip',
  149.             'give-comments'
  150.         );
  151.     */
  152.  
  153.  
  154.     if (empty($data['give-phone'])) {
  155.         give_set_error('give-phone', __('Please enter a phone number.', 'give'));
  156.     }
  157.  
  158.     if (empty($data['give-street1'])) {
  159.         give_set_error('give-street1', __('Please enter a street address.', 'give'));
  160.     }
  161.  
  162.     if (empty($data['give-city'])) {
  163.         give_set_error('give-city', __('Please enter a city.', 'give'));
  164.     }
  165.  
  166.     if (empty($data['give-state'])) {
  167.         give_set_error('give-state', __('Please enter a state.', 'give'));
  168.     }
  169.  
  170.     if (empty($data['give-zip'])) {
  171.         give_set_error('give-zip', __('Please enter a zipcode.', 'give'));
  172.     }
  173. }
  174.  
  175. // Store data
  176. add_filter( 'give_payment_meta', 'cfa_store_custom_fields' );
  177. function cfa_store_custom_fields($payment_meta) {
  178.  
  179.     $fields = array(
  180.         'give-phone',
  181.         'give-street1',
  182.         'give-street2',
  183.         'give-state',
  184.         'give-zip',
  185.         'give-comments',
  186.         'give-city',
  187.         'give-membership',
  188.         'give-business'
  189.     );
  190.  
  191.     foreach ($fields as $field) {
  192.         $payment_meta[$field] = isset($_POST[$field]) ? implode("n", array_map( 'sanitize_text_field', explode( "n", $_POST[$field]))) : '';
  193.     }
  194.  
  195.     return $payment_meta;
  196. }
  197.  
  198. // Add data to transaction view
  199. add_action( 'give_payment_personal_details_list', 'cfa_purchase_details', 10, 2 );
  200. function cfa_purchase_details( $payment_meta, $user_info ) {
  201.  
  202.     $fields = array(
  203.         'Phone'         => 'give-phone',
  204.         'Street 1'      => 'give-street1',
  205.         'Street 2'      => 'give-street2',
  206.         'State'         => 'give-state',
  207.         'Zipcode'       => 'give-zip',
  208.         'Comments'      => 'give-comments',
  209.         'City'          => 'give-city',
  210.         'Membership'    => 'give-membership',
  211.         'Business Name' => 'give-business'
  212.     );
  213.  
  214.     foreach ($fields as $key => $field) {
  215.         if (!isset( $payment_meta[$field])) {
  216.             continue;
  217.         } ?>
  218.  
  219.         <div class="referral-data">
  220.             <label><?php echo __($key, 'give'); ?></label>
  221.             <?php echo wpautop( $payment_meta[$field]); ?>
  222.         </div>
  223.     <?php }    
  224.  
  225. }
  226.  
  227. // Add to tag for email notification
  228. add_action( 'give_add_email_tags', 'cfax_add_customfield_tags' );
  229. function cfax_add_customfield_tags( $payment_id ) {
  230.     give_add_email_tag( 'phone', 'This tag can be used to output the phone number a user input.',    'cfa_get_phone_donation_data' );
  231.     give_add_email_tag( 'street1', 'This tag can be used to output the street a user input.',        'cfa_get_street1_donation_data' );
  232.     give_add_email_tag( 'street2', 'This tag can be used to output the street2 a user input.',       'cfa_get_street2_donation_data' );
  233.     give_add_email_tag( 'state', 'This tag can be used to output the state a user input.',           'cfa_get_state_donation_data' );
  234.     give_add_email_tag( 'zipcode', 'This tag can be used to output the zipcode a user input.',       'cfa_get_zipcode_donation_data' );
  235.     give_add_email_tag( 'comments', 'This tag can be used to output comments a user input.',         'cfa_get_comments_donation_data' );
  236.     give_add_email_tag( 'city', 'This tag can be used to output the city a user input.',             'cfa_get_city_donation_data' );
  237.     give_add_email_tag( 'membership', 'This tag can be used to output the membership a user input.', 'cfa_get_membership_donation_data' );
  238.     give_add_email_tag( 'business', 'This tag can be used to output the membership a user input.', 'cfa_get_business_donation_data' );
  239. }
  240.  
  241. function cfa_get_phone_donation_data( $payment_id ) {
  242.     return cfa_get_donation_additional_data('give-phone', $payment_id);
  243. }
  244.  
  245. function cfa_get_street1_donation_data( $payment_id ) {
  246.     return cfa_get_donation_additional_data('give-street1', $payment_id);
  247. }
  248.  
  249. function cfa_get_street2_donation_data( $payment_id ) {
  250.     return cfa_get_donation_additional_data('give-street2', $payment_id);
  251. }
  252.  
  253. function cfa_get_state_donation_data( $payment_id ) {
  254.     return cfa_get_donation_additional_data('give-state', $payment_id);
  255. }
  256.  
  257. function cfa_get_zipcode_donation_data( $payment_id ) {
  258.     return cfa_get_donation_additional_data('give-zip', $payment_id);
  259. }
  260.  
  261. function cfa_get_comments_donation_data( $payment_id ) {
  262.     return cfa_get_donation_additional_data('give-comments', $payment_id);
  263. }
  264.  
  265. function cfa_get_city_donation_data( $payment_id ) {
  266.     return cfa_get_donation_additional_data('give-city', $payment_id);
  267. }
  268.  
  269. function cfa_get_membership_donation_data( $payment_id ) {
  270.     return cfa_get_donation_additional_data('give-membership', $payment_id);
  271. }
  272.  
  273. function cfa_get_business_donation_data( $payment_id ) {
  274.     return cfa_get_donation_additional_data('give-business', $payment_id);
  275. }
  276.  
  277. /* Replaced this function 3/3/2018 after the Give 2.0 upgrade changed it's form - D. Northcutt
  278. function cfa_get_donation_additional_data($field, $payment_id){
  279.     $payment_meta = give_get_payment_meta( $payment_id );
  280.     $output       = __(wp_sprintf('No %s data found.', $field), 'give');
  281.     if ( isset( $payment_meta[$field] ) && ! empty( $payment_meta[$field])) {
  282.         $output = $payment_meta[$field];
  283.     }
  284.  
  285.     return $output;
  286. }
  287. */
  288.  
  289. // New function from Give tech support 3/3/2018 - D. Northcutt
  290. function cfa_get_donation_additional_data($field, $tag_args){
  291.     $payment_meta = give_get_payment_meta( $tag_args['payment_id'] );
  292.  
  293.     $output       = __(wp_sprintf('No %s data found.', $field), 'give');
  294.     if ( isset( $payment_meta[$field] ) && ! empty( $payment_meta[$field])) {
  295.         $output = $payment_meta[$field];
  296.     }
  297.  
  298.     return $output;
  299. }
  300.  
  301. add_action( 'give_donation_form_before_personal_info', 'cfa_add_membership_fields' );
  302. function cfa_add_membership_fields($form_id){
  303.     if ($form_id != 4337) {
  304.         return;
  305.     } ?>
  306.  
  307.     <div id="give-membership-wrap" class="form-row form-row-responsive">
  308.         <label class="give-label" for="give-membership">
  309.             <?php _e( 'Membership:', 'give' ); ?>
  310.             <span class="give-required-indicator">*</span>
  311.         </label>
  312.  
  313.          
  314.          <label class="give-label" for="give-membership-new">
  315.             <input type="radio" name="give-membership" id="give-membership-new" value="new" checked>
  316.             <?php _e( 'New Membership', 'give' ); ?>
  317.          </label>
  318.         <label class="give-label" for="give-membership-renewal">
  319.             <input type="radio" name="give-membership" id="give-membership-renewal" value="renewal">
  320.             <?php _e( 'Membership Renewal', 'give' ); ?>
  321.         </label>
  322.     </div>
  323. <?php }
  324.  
  325. add_action( 'give_donation_form_after_email', 'cfa_add_business_membership_fields' );
  326. function cfa_add_business_membership_fields($form_id){
  327.     if ($form_id != 4337) {
  328.         return;
  329.     } ?>
  330.  
  331.     <div id="give-business-wrap" class="form-row form-row-responsive">
  332.         <label class="give-label" for="give-business">
  333.             <?php _e( 'Business Name (only required for Business Membership):', 'give' ); ?>
  334.         </label>
  335.         <input class="give-input" type="tel" name="give-business" id="give-business" placeholder="Business Name" value=""/>
  336.     </div>
  337. <?php }
  338.  
  339. add_filter('give_email_heading', 'cfa_email_heading');
  340. function cfa_email_heading(){
  341.     return "Payment Receipt";
  342. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement