Skip to content

Instantly share code, notes, and snippets.

View xlplugins's full-sized avatar

XLPlugins xlplugins

View GitHub Profile
@xlplugins
xlplugins / FunnelKit PayPal + WooCommerce PayPal Payments sdk conflict
Last active April 1, 2026 09:50
FunnelKit PayPal + WooCommerce PayPal Payments sdk conflict
/**
* Plugin Name: FunnelKit PayPal + WooCommerce PayPal Payments — single SDK
* Description: Optional fix when both plugins load PayPal JS SDK: removes the duplicate sdk/js tag and rewires FunnelKit script deps to PPCP’s loader.
*
* PayPal allows one https://www.paypal.com/sdk/js include per page. Two tags break window.paypal
* (e.g. PPCP: "getFundingSources is not a function").
*
* @package FunnelKit_PayPal_PPCP_Compat
*/
@xlplugins
xlplugins / WeddingTropics theme
Created April 1, 2026 06:40
WeddingTropics theme
<?php
/**
* Dequeue conflicting WeddingTropics theme assets on FunnelKit Checkout page
*/
add_action( 'init', function() {
if ( ! class_exists( 'Custom_FunnelKit_Dequeue' ) ) {
class Custom_FunnelKit_Dequeue {
@xlplugins
xlplugins / WeddingTropics theme
Created April 1, 2026 06:40
WeddingTropics theme
<?php
/**
* Dequeue conflicting WeddingTropics theme assets on FunnelKit Checkout page
*/
add_action( 'init', function() {
if ( ! class_exists( 'Custom_FunnelKit_Dequeue' ) ) {
class Custom_FunnelKit_Dequeue {
@xlplugins
xlplugins / Run_custom_script_just_after_start_of_body_tag.php
Created March 30, 2026 13:17
Run custom script just after start of body tag on all funnel and site pages.php
add_action( 'wp_body_open', 'load_custom_js_below_body' );
function load_custom_js_below_body() {
?>
<script>
console.log('Script loaded just below body tag');
</script>
<?php
}
@xlplugins
xlplugins / Express wallets specific shipping method
Created March 27, 2026 06:32
Express wallets specific shipping method
add_filter(
'wc_stripe_get_formatted_shipping_methods',
static function ( $methods ) {
if ( ! is_array( $methods ) ) {
return $methods;
}
foreach ( $methods as $m ) {
if ( ! empty( $m['id'] ) && 'flat_rate:13' === $m['id'] ) {
return array( $m );
}
@xlplugins
xlplugins / Reward & coupon according to currency
Created March 26, 2026 07:53
Reward & coupon according to currency
add_filter( 'fkcart_rewards_list', function ( $data ) {
if ( empty( $data['rewards'] ) || ! isset( $data['subtotal'] ) ) {
return $data;
}
$currency = function_exists( 'get_woocommerce_currency' ) ? get_woocommerce_currency() : '';
$subtotal = (float) $data['subtotal'];
// (discount = coupon reward, freegift = free gift reward).
$targets = [
@xlplugins
xlplugins / show crypto qr top of customer details
Created March 24, 2026 09:27
show crypto qr top of customer details
/** FunnelKit TY: print PayGate crypto block before Customer Details; avoid duplicate on woocommerce_before_thankyou. */
defined( 'ABSPATH' ) || exit;
/**
* @return object|null Gateway instance with before_thankyou_page, or null.
*/
function paygatedotto_wffn_ty_paygate_gw( $order ) {
if ( ! $order instanceof WC_Order ) {
return null;
}
@xlplugins
xlplugins / free shipping for specific checkout
Created March 23, 2026 12:00
free shipping for specific checkout
add_filter( 'woocommerce_package_rates', 'wfacp_force_free_shipping_on_funnel_pages', 100, 2 );
/**
* Filter shipping rates to force free shipping on target FunnelKit checkout pages.
*
* @param array $rates Available shipping rates.
* @param array $package Shipping package data.
*
* @return array Filtered shipping rates.
@xlplugins
xlplugins / Funnelkit Cart : Free Shipping min amount set based on the currency
Created March 23, 2026 05:56
Funnelkit Cart : Free Shipping min amount set based on the currency
add_filter( 'fkcart_free_shipping', function ( $options ) {
// Ensure $options is an array.
if ( false === $options ) {
$options = [];
}
// Get current store/order currency (works with multi-currency plugins that hook into WooCommerce).
$currency = get_woocommerce_currency();
@xlplugins
xlplugins / FunnelKit - trust_section on wfacp_after_gateway_list
Last active March 21, 2026 05:37
Order button above HTML Field
/**FunnelKit - trust_section on wfacp_after_gateway_list */
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
const WFACP_TRUST_ID = 'trust_section';
add_action( 'wfacp_after_template_found', function () {
static $d = false;
if ( $d || ! class_exists( 'WFACP_Common' ) || ! function_exists( 'wfacp_form_field' ) ) {
return;