Skip to content

Instantly share code, notes, and snippets.

View joshuafredrickson's full-sized avatar
🍊
Orange pineapple

Joshua Fredrickson joshuafredrickson

🍊
Orange pineapple
View GitHub Profile
@joshuafredrickson
joshuafredrickson / add-alt-to-media-library.php
Created October 31, 2025 16:41
Add Alt Text and Dimensions columns to the Media Library
/**
* Add alt text and dimensions columns to the media library
*/
add_filter('manage_media_columns', function (array $columns): array {
$columns['alt'] = 'Alt Text';
$columns['dimensions'] = 'Dimensions';
return $columns;
});
/**
@joshuafredrickson
joshuafredrickson / add-to-slider-custom-js-section.js
Created October 29, 2025 21:47
Fix YouTube 153 errors in Slider Revolution
(function () {
const POLICY = "strict-origin-when-cross-origin";
function applyPolicy(root) {
(root || document)
.querySelectorAll('iframe[src*="youtube.com"], iframe[src*="youtu.be"]')
.forEach((el) => el.setAttribute("referrerpolicy", POLICY));
}
// Run once on load/DOM ready
@joshuafredrickson
joshuafredrickson / add_image_sizes.php
Created October 10, 2025 21:58
Add additional images sizes to WordPress
<?php
/**
* Add image sizes
*/
add_action('after_setup_theme', function (): void {
$imageSizeColumnsAll = [3, 6, 9, 12, 18, 24];
$biggestImageSize = 1600;
foreach ($imageSizeColumnsAll as $column) {
@joshuafredrickson
joshuafredrickson / phone-swap.js
Created October 1, 2025 21:28
Phone number swap based on query parameter
/*
CONFIGURE HERE
- TARGET_TEXTS: all text variants of the phone number on your site to replace.
- TARGET_TEL: digits-only version of the phone number (for tel: links).
- CAMPAIGN_NUMBERS: map of se_campaign value => replacement number display format (tel is auto-generated).
- STORAGE_KEY/STORAGE_DAYS: storage settings (uses localStorage if available, cookie fallback).
*/
(function () {
var TARGET_TEXTS = [
"(555) 555-1212",
@joshuafredrickson
joshuafredrickson / .env
Created November 3, 2024 21:35
Add Vite to a WordPress Theme
APP_URL=http://whatever-your-local-domain-is.test
@joshuafredrickson
joshuafredrickson / backup-mariadb.sh
Created June 26, 2024 18:46
Back up all MariaDB/MySQL databases and optionally exclude certain dbs
#!/bin/bash
# Set up variables
DBUSER=""
DBPASSWORD=""
DESTINATION="/volumes/external/mariadb"
EXCLUDE_DB="information_schema|performance_schema|mysql|sys" # Add any databases you want to exclude
# Get the list of databases
DBS=$(mysql -u $DBUSER -p$DBPASSWORD -e "SHOW DATABASES;" | grep -Ev "Database|$EXCLUDE_DB")
@joshuafredrickson
joshuafredrickson / gravityforms.php
Created June 17, 2024 13:51
Temporary fix for Gravity Forms merge tags on form notification edit screens
<?php
/**
* Temporary fix for Gravity Forms merge tags on form notification edit screens
*
* @see https://github.com/roots/acorn/issues/198
*/
add_action('admin_footer', function (): void {
// Only on GF admin pages
if (!class_exists('GFForms') || !isset($_GET['page']) || 'gf_edit_forms' !== $_GET['page']) {
return;
@joshuafredrickson
joshuafredrickson / solid-security.php
Created April 10, 2024 21:59
Change who receives Solid Security notifications based on environment type
<?php
/**
* Plugin Name: Solid Security configuration
* Plugin URI: https://joshuafredrickson.com
* Version: 1.0.0
* Description: Filter notifications in non-production environments.
* Author: Kinetic
* Author URI: https://joshuafredrickson.com
* License: GNU General Public License v2
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
@joshuafredrickson
joshuafredrickson / gravity-forms.js
Created March 15, 2024 22:02
Gravity Forms: Perform an action while the form is submitting
/**
* Hook into the Gravity Forms submission process to show a loading state
*/
const wrapper = document.querySelector(
'.gform_wrapper'
);
const gfSubmitting = `gf_submitting_${
wrapper.querySelector('form').dataset.formid
}`;
@joshuafredrickson
joshuafredrickson / remove-slider-revolution-metabox.php
Last active January 15, 2024 16:02
WordPress: Remove Slider Revolution metabox from certain post types
<?php
/**
* Remove Slider Revolution metabox from certain post types.
* This includes removing it from the top of ACF field groups.
*/
add_action('do_meta_boxes', function (): void {
if (!is_admin()) {
return;
}