Skip to content

Instantly share code, notes, and snippets.

@goranefbl
goranefbl / hs-widget.php
Created February 13, 2025 12:37
hs-widget.php
<?php
/* @var $args array */
$tracking_actions = false;
if ( class_exists('WC_Shipment_Tracking_Actions') ) {
$tracking_actions = new \WC_Shipment_Tracking_Actions();
}
if ( ! class_exists( 'TomShippingBob' ) ) {
include_once "../inc/classes/TomShippingBob.class.php";
}
@goranefbl
goranefbl / functions.php
Created January 24, 2025 19:43
different amount per product
<?php
add_filter('gens_raf_coupon_amount', 'modify_raf_coupon_amount', 10, 2);
function modify_raf_coupon_amount($amount, $order_id) {
// Get the order object
$order = wc_get_order($order_id);
if (!$order) {
return $amount; // Return default amount if order not found
@goranefbl
goranefbl / functions.php
Created January 16, 2025 09:27
utm-add-on-hold-status
<?php
namespace WPGens_ST\Includes\WooCommerce;
use Automattic\WooCommerce\Utilities\OrderUtil;
defined('ABSPATH') || exit;
class WPGENS_ST_Orders_Analytics
{
@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 });