File: //var/www/bharti-foundation.stgviitor.com/wp-content/themes/lifeline-child/functions.php
<?php
/**
* Lifeline Child Theme functions and definitions
*
* @link https://developer.wordpress.org/themes/advanced-topics/child-themes/
*/
function lifeline_child_enqueue_styles() {
// Styles
wp_enqueue_style( 'lifeline-parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'lifeline-child-style', get_stylesheet_uri(), array( 'lifeline-parent-style' ) );
wp_enqueue_style( 'lifeline-child-custom', get_stylesheet_directory_uri() . '/assets/css/custom-style.css', array( 'lifeline-child-style' ), '1.0.0' );
wp_enqueue_style( 'lifeline-child-responsive', get_stylesheet_directory_uri() . '/assets/css/custom-responsive.css', array( 'lifeline-child-custom' ), '1.0.0' );
// Scripts (IMPORTANT FIXES)
wp_enqueue_script( 'inkthemes', get_stylesheet_directory_uri() . '/js/recurring/subscription.js', array('jquery'), '1.0.0', true );
wp_enqueue_script( 'subscription_script', get_stylesheet_directory_uri() . '/js/recurring/subscription_script.js', array('jquery', 'inkthemes'), '1.0.0', true );
// Razorpay (FIX: use HTTPS)
wp_enqueue_script( 'inkthemes-razorpay', 'https://checkout.razorpay.com/v1/checkout.js', array(), null, true );
// Localize (MUST be after enqueue of same handle)
wp_localize_script( 'inkthemes', 'MyAjax', array( 'ajaxurl' => admin_url('admin-ajax.php') ) );
}
add_action( 'wp_enqueue_scripts', 'lifeline_child_enqueue_styles', 9999 );
require_once get_stylesheet_directory() . '/inc/recurring_donation.php';
add_action('wp_footer', function () {
?>
<script>
document.addEventListener("DOMContentLoaded", function () {
const header = document.querySelector('.elementor-element-68a0031e');
if (!header) return; // safety check
window.addEventListener('scroll', function () {
if (window.scrollY > 100) {
header.classList.add('sticky-header');
} else {
header.classList.remove('sticky-header');
}
});
});
</script>
<?php
});
add_filter('register_post_type_args', function ($args, $post_type) {
if ($post_type === 'lif_event') {
$args['has_archive'] = false; // disable archive
}
return $args;
}, 10, 2);
//recurring donation plugin page code
include_once( get_stylesheet_directory() .'/inc/recurring_donation.php');
function recurring_donate_form_shortcode() {
ob_start();
?>
<section class="recurring-donate-form-section">
<div class="container-fluid container-lg">
<div class="text-center recurring-donate-title">
<h2>Your Donation is Making a difference!</h2>
</div>
<form id="recurring_plan" class="donation-form" name="donation-form" method="post">
<div class="row">
<div class="form-group col-sm-4">
<label class="font-inter text-secondary fs-6 fw-normal">Full Name :</label><span class="aestrick text-primary">*</span>
<input type="text" name="name" id="name" value="" class="form_control form-control">
<div id="sub_id_error_name_recurring" class="recurring_error_sec"></div>
</div>
<div class="form-group col-sm-4">
<label class="font-inter text-secondary fs-6 fw-normal">Email :</label><span class="aestrick text-primary">*</span>
<input type="text" name="email" id="emailAddress" value="" class="form_control form-control">
<div id="sub_id_error_recurring" class="recurring_error_sec"></div>
</div>
<div class="form-group col-sm-4">
<label class="font-inter text-secondary fs-6 fw-normal">PAN Number :</label><span class="aestrick text-primary">*</span>
<input type="text" name="pan_no" id="pan_no" value="" class="form_control form-control">
<div id="sub_id_pan_no_error_recurring" class="recurring_error_sec"></div>
</div>
</div>
<ul class="plan-group-block">
<li class="plan-item plus selected">
<div class="d-flex">
<div class="plan-radio-btns d-flex align-align-items-center">
<div class="d-flex">
<input type="radio" class="custom-input-control" id="plus" name="donationPlan" value="plus">
<label class="custom-input-label" for="plus">
<p class="plan-name">Individual <span class="plan-desc">(for 1 person)</span></p>
</label>
</div>
</div>
<div class="plan-radio-btns d-flex align-align-items-center">
<div class="d-flex">
<input type="radio" class="custom-input-control" id="standard" name="donationPlan" value="standard" checked="">
<label class="custom-input-label" for="standard">
<p class="plan-name">Family & Friends <span class="plan-desc">(for Groups)</span></p>
</label>
</div>
</div>
</div>
<div class="plan-item-block">
<div class="plan-amount d-flex align-items-center">
<div class="plan-label-col">
<p class="plan-label-title pb-1">
amount
</p>
<p class="plan-label-des">
Starting at 10
</p>
</div>
<div class="plan-price custom-select-control">
<div class="custom-input-select form-control custom-select-control position-relative">
<span class="currency-text">₹</span>
<select class="select selected_value" name="per_day" id="per_day">
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</div>
<p class="plan-label-des day-text position-absolute">Per Day</p>
</div>
</div>
</div>
</li>
<li class="plan-item standard">
<div class="plan-item-block">
<div class="plan-amount d-flex align-items-center">
<div class="plan-label-col">
<p class="plan-label-title pb-1">
amount
</p>
<p class="plan-label-des">
Starting at 10
</p>
</div>
<div class="plan-price custom-select-control">
<div class="custom-input-select form-control custom-select-control position-relative">
<span class="currency-text">₹</span>
<select name="per_day" id="per_day_standard" class="select" disabled="disabled">
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</div>
<p class="plan-label-des day-text position-absolute">Per Day</p>
</div>
</div>
<div class="plan-members d-flex align-items-center">
<div class="plan-label-col">
<p class="plan-label-title pb-1">Members</p>
<p class="plan-label-des">Starting at 2 members</p>
</div>
<div class="plan-users">
<div class="custom-input-counter" id="groups">
<span class="count-decrease" style="pointer-events: none;">-</span>
<input type="number" min="2" value="2" max="5" id="person" name="person" readonly="" disabled="disabled">
<span class="count-increase" style="pointer-events: none;">+</span>
</div>
</div>
</div>
</div>
</li>
</ul>
<div class="plan-timeframe-block d-flex align-items-center" id="period_sec">
<div class="d-flex align-items-center form-title-wrapper">
<div class="font-inter pay-text">Pay:</div>
<div class="plan-radio-btns d-flex align-items-center">
<div class="d-flex align-items-center custom_radio_period">
<input type="radio" id="monthly" name="period" value="Monthly" checked="">
<label class="custom-input-label">
<span class="plan-name">Monthly</span>
</label>
</div>
<div class="d-flex align-items-center custom_radio_period">
<input type="radio" id="annually" name="period" value="Annually">
<label class="custom-input-label">
<span class="plan-name">Annually</span>
</label>
</div>
</div>
</div>
<div class="plan-users-years d-flex align-items-center form-title-wrapper">
<div class="font-inter payfor-text">Pay For:</div>
<div class="d-flex align-items-center">
<div class="plan-users">
<div class="custom-input-counter d-flex no_of_stop_value ">
<span class="count-decrease">-</span>
<input type="number" min="2" value="2" max="15" id="no_of_stop_value" name="no_of_stop_value" readonly="">
<span class="count-increase">+</span>
</div>
</div>
<div class="font-inter time-text check_monthly_annually_text pay_for">/ Months</div>
</div>
</div>
</div>
<div class="form-footer recdonate-total-block">
<div class="d-flex flex-column align-items-end">
<div class="d-flex total-amount-text">
<div class="total-label">Total : </div>
<div class="amount-total">
<span class="total_amount amount-label" name="total_amount" data-myval="0">300</span><label class="check_monthly_annually">Month</label>
</div>
</div>
<div class="total-wrapper">
<p class="font-inter appreciate-text">We appreciate your contribution.</p>
</div>
</div>
<div class="recdonate-action-block d-flex align-items-center justify-content-end">
<p class="font-inter tax-80g-des"></p>
<input type="button" id="save_data" name="save_data" class="btn-donation btn btn-primary btn-lg fs-6 text-nowrap" value="Proceed Payment">
<div class="PaymentButton-Button-rzpBranding"><span class="powered-by-razorpay"><span class="razorpay_powered_by">Secured by</span> <img src="https://cdn.razorpay.com/logo.svg"></span></div>
</div>
<input id="sub_id" name="myInputName" type="hidden" value="">
<input id="razorpay_key" name="razorpay_key" type="hidden" value="rzp_live_4Q9ZWF9oYp67Qq">
<div id="loader" style="display: none;">
</div>
<div class="thank_u" style="display: none;">https://bharti-foundation.com/recurring-donation/ </div>
</div></form>
</div></section>
<?php
return ob_get_clean();
}
add_shortcode('recurring_donation_form', 'recurring_donate_form_shortcode');
function razorpay_donate_button_shortcode() {
return '
<div class="donate-wrapper">
<form id="rzp-form">
<script
src="https://checkout.razorpay.com/v1/payment-button.js"
data-payment_button_id="pl_JGRq1Cnw0T4grz"
async>
</script>
</form>
<button class="custom-donate-btn">Donate Now</button>
</div>
<style>
.donate-wrapper {
position: relative;
display: inline-block;
}
.donate-wrapper form,
.donate-wrapper iframe,
.donate-wrapper span {
position: absolute !important;
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
opacity: 0 !important;
z-index: 2 !important;
cursor: pointer !important;
}
.custom-donate-btn {
position: relative;
z-index: 1;
background-color: #e91e63;
color: white;
border: none;
padding: 12px 32px;
font-size: 16px;
border-radius: 6px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.donate-wrapper:hover .custom-donate-btn {
background-color: #00bcd4 !important;
}
</style>
';
}
add_shortcode('donate_button', 'razorpay_donate_button_shortcode');
function mailtrap($phpmailer)
{
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_HOST;
$phpmailer->SMTPAuth = true;
$phpmailer->Port = SMTP_PORT;
$phpmailer->Username = SMTP_USER;
$phpmailer->Password = SMTP_PASS;
$phpmailer->SMTPSecure = SMTP_SECURE;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_FROM_NAME;
}
add_action('phpmailer_init', 'mailtrap');
add_filter('upload_mimes', 'cc_mime_types');
function cc_mime_types($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}