Skip to content

Instantly share code, notes, and snippets.

@bjornjohansen
bjornjohansen / wordpress-menu-cache.php
Last active March 7, 2024 13:57
WordPress Menu Cache
<?php
/**
* WordPress menu cache.
*
* @package BJ\Menu
* @author bjornjohansen
* @version 0.1.0
* @license https://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License version 2 (GPLv2)
*/
@bjornjohansen
bjornjohansen / maintenance.php
Created August 31, 2017 11:57
Custom WordPress maintenance mode page
<?php
wp_load_translations_early();
$protocol = wp_get_server_protocol();
header( "$protocol 503 Service Unavailable", true, 503 );
header( 'Content-Type: text/html; charset=utf-8' );
header( 'Retry-After: 30' );
?>
<!DOCTYPE html>
<html>
@bjornjohansen
bjornjohansen / run-wp-cron.sh
Last active September 17, 2023 21:12
Run all due cron events for WordPress with WP-CLI. Works with both single sites and multisite networks.
#!/bin/bash
# Copyright © 2015 Bjørn Johansen
# This work is free. You can redistribute it and/or modify it under the
# terms of the Do What The Fuck You Want To Public License, Version 2,
# as published by Sam Hocevar. See http://www.wtfpl.net/ for more details.
WP_PATH="/path/to/wp"
# Check if WP-CLI is available
if ! hash wp 2>/dev/null; then
@bjornjohansen
bjornjohansen / sitemap-crawler.php
Last active August 14, 2023 18:19
Basic sitemap crawler to warm up a full page cache
#!/usr/bin/php
<?php
/**
* @license http://www.wtfpl.net/txt/copying/ WTFPL
*/
date_default_timezone_set( 'UTC' );
$sitemaps = array(
@bjornjohansen
bjornjohansen / logging.php
Last active January 20, 2023 18:48
Simple logging for WordPress
<?php
/**
* Simple logging for WordPress.
*
* @package BJ\Log
* @author bjornjohansen
* @version 0.1.0
* @license https://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License version 2 (GPLv2)
*/
@bjornjohansen
bjornjohansen / object-cache.php
Created November 4, 2015 10:47
Loading the Optimal WordPress Object Cache Implementation (modified)
<?php
/**
* Based on an idea and code by webdev studios: https://webdevstudios.com/2015/11/03/loading-the-optimal-wordpress-object-cache-implementation-in-your-production-staging-and-local-development-environments/
*/
$plugin_dir = ( defined( 'WP_PLUGIN_DIR' ) ? WP_PLUGIN_DIR : WP_CONTENT_DIR . '/plugins' );
// If Redis exists and redis server is configured,
@bjornjohansen
bjornjohansen / wordpress.conf
Last active April 1, 2022 13:46
Nginx config for WordPress
index index.php index.html;
# Don’t log favicon requests
location /favicon.ico {
log_not_found off;
access_log off;
}
# Disallow access to readme.html
location /readme.html {
@bjornjohansen
bjornjohansen / gravityforms-privacyactions.php
Last active June 8, 2021 19:09
Personal data exporter and eraser for Gravity Forms.
<?php
/**
* Personal data exporter and eraser for Gravity Forms.
*
* @package BJ\GravityForms\PrivacyActions
* @author bjornjohansen
* @version 0.1.1
* @license https://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License version 2 (GPLv2)
*/
@bjornjohansen
bjornjohansen / reorder-attributes.php
Created January 26, 2021 14:46
Reorder the visible attributes on the frontend.
<?php
/**
* Reorder the visible attributes on the frontend.
*/
add_filter( 'woocommerce_product_get_attributes', function( $old_attributes, $obj ) {
$order = [ 'pa_colour', 'pa_size' ];
$new_attributes = [];
@bjornjohansen
bjornjohansen / auth.php
Last active October 16, 2020 12:33
Changes the expiration of the WordPress authentication cookie to 365 days if the user ticks the “Remember Me” checkbox.
<?php
/**
* Authentication customizations.
*
* @package BJ\Auth
*/
/**
* Filters the duration of the authentication cookie expiration period.
*