Skip to content

Instantly share code, notes, and snippets.

@cliffordp
cliffordp / functions.php
Last active April 14, 2026 02:02
Disable USA Holidays for Gravity Forms Gravity Wiz Limit Dates.
<?php
/**
* Disable USA Holidays for Gravity Forms Gravity Wiz Limit Dates.
*
* @link https://gravitywiz.com/documentation/gravity-forms-limit-dates/
* @link https://gist.github.com/cliffordp/38892bbfe30702d4623c9c13e17a1b09 This snippet.
*
* DOES NOT appear in the form editor's UI but DOES take effect when filling the form.
* If you add your own Exception within form editor's UI, that will take precedence over these rules.
*
@cliffordp
cliffordp / gf-readonly-until-value.js
Last active April 10, 2026 14:57
Gravity Forms: add the READONLY property to an input UNTIL it gets a value set
/*
* This snippet: https://gist.github.com/cliffordp/c0b48b14f0f6f42d27c79e8f39013774
* DEMO: https://share.zight.com/bLu9x8Y6 (3min)
* WHAT: This adds the READONLY property to an input field and then removes it AFTER this same field has a value in it.
* .readonly-until-value -> because self-referential, it's hidden until this field gets a value entered, such as via Populate Anything.
* .readonly-until-value-77 -> the field with this class will be READONLY until Field #77 has a value.
* WHY: Useful when a text field gets a dynamically-filled value but you want the input to remain editable thereafter.
* EXAMPLE: a "County" text input (Field #9) has class `readonly-until-value-77` so when Full Address text input (Field #77)
* gets a value (from human or dynamic), then County (#9) has its READONLY removed because #77 got a value. The idea is that
* County would be dynamically-filled once Full Address is entered, but it remains editable for user correction and/or in case
@cliffordp
cliffordp / gp-open-default-overlay.js
Last active March 6, 2026 18:11
GeneratePress Overlay Panel Triggered by Custom JS Event (https://generate.support/topic/site-wide-trigger-of-an-overlay/)
document.addEventListener("click", (event) => {
const link = event.target.closest("a");
const href = link?.getAttribute("href");
// trigger on click of ANY element type that has this class (even if not a link)
let shouldIntercept = event.target.closest(".trigger-popup") !== null;
if (!shouldIntercept && href) {
if (href === "#") {
shouldIntercept = true;
@cliffordp
cliffordp / script.js
Last active December 31, 2025 11:33 — forked from acoyfellow/example.html
GHL: Add meaningful page titles based on heading content so they're not all the same
<script>
// This script: https://gist.github.com/cliffordp/335bee91f59a49a378cdfd44bd8f510f
// Based on https://www.facebook.com/groups/gohighlevel/posts/2734386397020878 from Jordan Coeyman
// Install this (without this comment block) via "Custom JS": https://app.gohighlevel.com/settings/company?tab=whitelabel
(function() {
'use strict';
const POLL_INTERVAL = 2000;
@cliffordp
cliffordp / functions.php
Last active February 10, 2025 21:18
Squirrly SEO: Custom Meta Robots for custom post type (CPT) archives
<?php
/*
* Squirrly SEO: Custom Meta Robots for custom post type (CPT) archives.
*
* Set `<meta name="robots" content="noindex,nofollow">` for WPAutoTerms archives (e.g. /terms page).
*
* Must be a priority AFTER 11 and BEFORE 99 due to the plugin's own use
* of this same filter hook in squirrly-seo/models/services/Noindex.php
*
* @link https://gist.github.com/cliffordp/f4ac939df52f1ba7f3120801eea43a32 This snippet.
@cliffordp
cliffordp / missed-call-text-back-calculator.html
Last active December 2, 2024 15:07
Missed Call Text Back Calculator by Jonny Avila
Jonny Avila, video preview: https://www.facebook.com/groups/gohighlevel/posts/2316269752165880/
Instructions: https://docs.google.com/document/d/1HJZtesCocsTJHlqfzspThOsqTy3v294VBceD98Vj6Ls/preview
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Your Agency ROI Calculator</title>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap" rel="stylesheet">
@cliffordp
cliffordp / ghl-login-screen-full-customization.css
Last active April 30, 2025 04:05
GHL Login Screen custom CSS for AbleProApp
/**
* This code: https://gist.github.com/cliffordp/96aeba5b0348ec00f5eb4c4f48296272
* Modified from this source: https://www.facebook.com/groups/gohighlevel/permalink/2333866730406182/
*/
/* GHL Login Screen */
:root {
--main-body-bg: #fff;
--main-body-image: url(https://storage.googleapis.com/msgsndr/BNxDfo4mNns3odfcbYu9/media/66f4c4058fdba12698dd782f.png);
--main-login-bg: #fff;
@cliffordp
cliffordp / 1-Notes.txt
Last active November 1, 2024 16:20
GHL Menu Sticky Scrolling Menu (watch the video in Notes.txt)
Source: https://www.facebook.com/groups/gohighlevel/posts/2356583604801161/
Here is the code that enables a sticky menu that eases in and out upon scroll. Just copy/paste in your Website > Settings Head and Body tracking code fields, then follow my quick video here to set your sticky menu up in HighLevel:
https://www.loom.com/share/fd0d5c87f377401d8e589c5d6a4107ce?sid=7745df88-84b4-4aef-9b05-ee86947b73e5
If you need any help, shoot me an email: tracyw@t-worx.com.
T-WORX, Inc.
Tracy Wittenkeller
@cliffordp
cliffordp / script.js
Created October 11, 2024 17:45
Create a Google Sheets `=GPT("...")` function with your OpenAI API Key
// Source: https://jonathanboshoff.com/free-gpt-4-sheets-alternative/
function GPT(Input) {
const GPT_API = "AAAAAAAAAAAAA"; // Replace with your actual API key
const BASE_URL = "https://api.openai.com/v1/chat/completions";
const headers = {
"Content-Type": "application/json",
"Authorization": `Bearer ${GPT_API}`
};