Skip to content

Instantly share code, notes, and snippets.

@goranefbl
goranefbl / functions.php
Last active January 15, 2025 23:13
partial use of coupons
<?php
add_action('woocommerce_checkout_order_processed', 'handle_partial_coupon_usage', 10, 3);
function handle_partial_coupon_usage($order_id, $posted_data, $order) {
$applied_coupons = $order->get_coupon_codes();
// Ensure only one coupon is applied
if (count($applied_coupons) === 1) {
$coupon_code = current($applied_coupons);
$coupon = new WC_Coupon($coupon_code);
@goranefbl
goranefbl / index.js
Last active December 23, 2024 12:22
goran-perbelle
import Fastify from "fastify";
import WebSocket from "ws";
import fs from "fs";
import dotenv from "dotenv";
import fastifyFormBody from "@fastify/formbody";
import fastifyWs from "@fastify/websocket";
// Load environment variables from .env file
dotenv.config();
// Retrieve the OpenAI API key from environment variables. You must have OpenAI Realtime API access.
const { OPENAI_API_KEY } = process.env;
@goranefbl
goranefbl / functions.php
Created December 8, 2024 13:09
UTM Friends Email notification
<?php
add_action('woocommerce_checkout_order_processed', 'send_custom_order_email', 10, 1);
function send_custom_order_email($order_id) {
$order = wc_get_order($order_id);
$utm_source = get_post_meta($order_id, '_wpg_first_source', true);
// Only send email if utm_source exists and is an email address
if (!empty($utm_source) && filter_var($utm_source, FILTER_VALIDATE_EMAIL)) {
@goranefbl
goranefbl / functions.php
Last active January 15, 2025 12:43
Accumulate coupons into single coupon
<?php
// Hook the function to the filter
add_filter('gens_raf_coupon_amount', 'modify_raf_coupon_amount', 10, 2);
function modify_raf_coupon_amount($amount, $order_id) {
// Get the user email from the order
$order = wc_get_order($order_id);
if (!$order) return $amount;
$rafID = get_post_meta($order_id,'_wpgens_raf_id',true);
if(!$rafID) {
@goranefbl
goranefbl / functions.php
Created December 4, 2024 14:37
fees instead of coupons
<?php
/* TEMPORARY FEES INSTEAD OF COUPONS CODE */
add_action('woocommerce_cart_calculate_fees', 'apply_10_percent_discount_as_fee');
function apply_10_percent_discount_as_fee($cart) {
// Avoid applying the fee in the admin or if cart is empty
if (is_admin() || !WC()->cart->get_cart_contents_count()) {
return;
}
<table style="border-collapse: collapse; font-family: Arial; width: 100%;" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding: 0px;">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="text-align: left; padding-top: 10px; padding-bottom: 20px;">
<p style="font-size: 14px; margin: 0;">Michael Baum</p>
<p style="font-size: 14px; margin: 0;">Founder and CEO</p>
@goranefbl
goranefbl / route.js
Created October 3, 2024 10:52
Accept form file from webflow, upload to google drive and save to notion. Put file under app/api/upload/route.js
import { google } from "googleapis";
import { Readable } from "stream";
import { NextResponse } from "next/server";
import { Client } from "@notionhq/client";
let auth;
let drive;
const notion = new Client({ auth: process.env.NOTION_API_KEY });
@goranefbl
goranefbl / functions.php
Created September 17, 2024 10:41
custom popup on raf word
<?php
// Add this code to your theme's functions.php file
function custom_raf_popup() {
// Check if the URL contains the 'raf' query parameter
if (isset($_GET['raf'])) {
// Add popup HTML, CSS, and JS to footer
add_action('wp_footer', 'custom_popup_html');
}
@goranefbl
goranefbl / reach.php
Last active September 8, 2024 10:12
reach webhooks
<?php
// Exit if accessed directly
if (!defined('ABSPATH')) {
exit;
}
add_action('rest_api_init', 'register_withreach_webhook_endpoint');
function register_withreach_webhook_endpoint() {
register_rest_route('withreach/v1', '/webhook', array(
@goranefbl
goranefbl / functions.php
Created September 7, 2024 15:59
Save utm to user then order
<?php
// Hook to save user meta when a user registers
add_action('user_register', 'save_source_tracker_user_meta', 10, 1);
function save_source_tracker_user_meta($user_id) {
$disabled = get_option('wpgens_st_disable');
if ($disabled) {
return;