Skip to content

Instantly share code, notes, and snippets.

View wpeasy's full-sized avatar

Alan Blair wpeasy

  • WPEasy Pty Ltd
  • Brisbane Australia
View GitHub Profile
@wpeasy
wpeasy / prompt.txt
Created July 17, 2025 01:18
Bricks 2.0 AI Generated Framework
Please answer the following settings for generating a CSS clamp() value. I will not proceed until you provide all the values (or confirm the defaults):
Clamp() Generation Settings
1. What is the base rem size? (default: 10px)
2. What is the min viewport width? (default: 380px)
3. What is the min size in pixels? (default: 15px)
4. What is the max viewport width? (default: 1600px)
5. What is the max size in pixels? (default: 18px)
________________________________________
📐 Choose a spacing scale ratio (case-insensitive)
Options:
@wpeasy
wpeasy / javascript.js
Created July 15, 2025 03:53
Bricks No GSAP Scrub
(() => {
const parseOffset = (offset, vh) =>
offset?.endsWith('%') ? (parseFloat(offset) / 100) * vh : parseFloat(offset || 0);
const getTargetPoint = (rect, side) => {
switch (side) {
case 'top': return rect.top;
case 'center': return rect.top + rect.height / 2;
case 'bottom': return rect.bottom;
default: return rect.top;
@wpeasy
wpeasy / code.php
Created July 11, 2025 12:55
Gravity Block Disposable email
<?php
add_filter('gform_field_validation', 'check_disposable_email_gf', 10, 4);
function check_disposable_email_gf($result, $value, $form, $field) {
if ($field->get_input_type() !== 'email' || empty($value)) {
return $result;
}
// Exact domain blocklist
$blocked_domains = [
@wpeasy
wpeasy / code.php
Created June 21, 2025 04:02
Bricks Date Comparison
<?php
add_filter("bricks/code/echo_function_names", function () {
return [
"wpe_date_is_eq_now",
"wpe_date_is_gt_now",
"wpe_date_is_gte_now",
"wpe_date_is_lt_now",
"wpe_date_is_lte_now",
"wpe_output_date_stats",
@wpeasy
wpeasy / script.js
Created April 8, 2025 12:35
Bricks Dynamic Header Variable for AT Framework
/*
This script uodates the variable "--at-header-height" to the height of the Bricks Header dynamically.
*/
(() => {
const setHeaderHeightVar = () => {
const header = document.querySelector("#brx-header");
if (header) {
const height = header.offsetHeight;
document.body.style.setProperty(
"--at-header-height",
@wpeasy
wpeasy / code.php
Created April 2, 2025 02:10
WP Custom REST Endpoint Cache with Transients.
<?php
class WPE_Simple_REST_Cache {
const CACHE_TTL_DEFAULT = 300; // 5 minutes
const CACHE_PREFIX = 'wpe_rest_cache_';
/**
* Initialise cache hooks.
*/
@wpeasy
wpeasy / REST_Api
Last active April 1, 2025 08:42
Bricks Ajax Loader
<?php
class AB_BricksAPI
{
const API_NAMESPACE = "wpe_bricks_ajax/v1";
static function init()
{
add_action("rest_api_init", [
__CLASS__,
@wpeasy
wpeasy / code.php
Created March 19, 2025 08:09
Disable access to Bricks Templates for non Admininistrators
<?php
function wpe_restrict_bricks_template_access()
{
if (!current_user_can("administrator")) {
// Prevent access to editing bricks_template
add_filter(
"user_has_cap",
function ($allcaps, $caps, $args) {
$post_type = get_post_type($args[2] ?? 0);
@wpeasy
wpeasy / DummyJSON_API.php
Last active June 12, 2025 08:26
Bricks Builder: : Query Loop anything from any API!
<?php
define("WPE_JSON_TRANSIENT_NAME", "wpe_dummyjson");
define("WPE_JSON_TRANSIENT_TTL", 60);
define("WPE_JSON_ENDPOINT_BASE", "https://dummyjson.com/");
/** Add query type to dropdown */
add_filter("bricks/setup/control_options", function ($control_options) {
// Add a new query loop type
$control_options["queryTypes"]["wpe_json"] = esc_html__(
"DummyJSON",
@wpeasy
wpeasy / template.json
Created December 25, 2024 00:40
AT + Bricks Framework
{"at_settings":{"bricks-advanced-themer_frontend_styles":"","bricks-advanced-themer__brxc_theme_settings_tabs":["global-colors","css-variables","builder-tweaks","admin-bar"],"_bricks-advanced-themer__brxc_theme_settings_tabs":"field_645s9g7tddfj2","bricks-advanced-themer__brxc_enable_elements":["darkmode-toggle","darkmode-button"],"_bricks-advanced-themer__brxc_enable_elements":"field_63aabb0ccebeb","bricks-advanced-themer__brxc_enable_disable_bricks_elements":["container","section","block","div","heading","text-basic","text","text-link","button","icon","image","video","nav-nested","dropdown","offcanvas","toggle","divider","icon-box","social-icons","list","accordion","accordion-nested","tabs","tabs-nested","form","map","alert","animated-typing","countdown","counter","pricing-tables","progress-bar","pie-chart","team-members","testimonials","html","code","template","logo","facebook-page","breadcrumbs","image-gallery","audio","carousel","slider","slider-nested","svg","instagram-feed","wordpress","posts","paginat