Skip to content

Instantly share code, notes, and snippets.

Rocking this project.

Mike Garrett MikeNGarrett

Rocking this project.
View GitHub Profile
MikeNGarrett /
Created Nov 22, 2022
Export Keybase teams messages and download attachments
# Forked:
#To export a chat from the ZorkInc team, run:
# ./ ZorkInc
# It will create a folder ZorkInc in which you'll find a JSON file containing raw logs, a .log file containing human-readable export of the chat. It'll also download all attachments of the chat and put them in that same folder.
# Note: defaults to "general" channel in your team. Change references to this channel below under "topic_name" (3).
import json
import sys
import os
MikeNGarrett / module.module.php
Last active Nov 2, 2022
Drupal curated autocomplete field
View module.module.php
use Drupal\Core\Form\FormStateInterface;
function hook_field_widget_complete_entity_reference_autocomplete_form_alter(&$field_widget_complete_form, $form_state, $context)
if($field_widget_complete_form['widget']['#field_name'] !== 'field_test') {
$storage = Drupal::getContainer()->get('entity_type.manager')->getStorage('node');
MikeNGarrett / mysql(wp)-commands.txt
Created Oct 31, 2022 — forked from vishalkakadiya/mysql(wp)-commands.txt
WordPress(or any mysql database) - Convert special characters(eg. Latin-1) to UTF-8 in mysql database
View mysql(wp)-commands.txt
The actual step-by-step WordPress / MySQL fix…
1. Back up all your stuff first (likely using phpMyAdmin / CPANEL)
Before doing any of the following it strongly encouraged to back up all your data and files. Just to be safe. At the very least, your full database and the WordPress config file: wp-config.php
2. Note the settings that your WordPress is currently using (from wp-config.php)
Specifically, your MySQL database configuration, including DB_NAME, DB_USER, DB_PASSWORD, and also DB_CHARSET and DB_COLLATE
// ** MySQL settings - You can get this info from your web host ** //
MikeNGarrett / post-list.sql
Created Jun 18, 2019
Mysql query to list all WordPress posts with categories and tags
View post-list.sql
cat_posts.ID as ID,
cat_posts.post_title as Title,
cat_posts.post_date as Published,
WHEN cat_term_taxonomy.taxonomy = 'category' THEN GROUP_CONCAT(DISTINCT SEPARATOR ', ')
as Categories,
MikeNGarrett /
Last active Jan 28, 2019
Test site compatibility with a specific version of PHP
# Test site compatibility with a specific version of PHP.
# Requires phpcs and PHPCompatibility config installed.
phpcs --standard=PHPCompatibility --runtime-set testVersion 7.2 ./
# Configuration I use most:
phpcs -p ./ --standard=PHPCompatibility --runtime-set testVersion 7.2 --report-full=~/petitions-7.2.txt --ignore="*.js|css"
MikeNGarrett /
Last active Mar 22, 2019
PHPCS config for multiple installed paths - WordPress, Drupal, PHP Compatibility
# Set multiple install paths for phpcs.
# This example adds configs for WordPress, Drupal, and PHP compatibility.
# NOTE: change `/full/path/to/` to the path to your composer directory.
phpcs --config-set installed_paths "/full/path/to/.composer/vendor/wp-coding-standards/wpcs/,/full/path/to/.composer/vendor/drupal/coder/,/full/path/to/composer/vendor/phpcompatibility/php-compatibility/"
# Solves the error: PHPCS Response ERROR: Referenced sniff "WordPress-Extra" does not exist. Run "phpcs --help" for usage information
MikeNGarrett /
Created Dec 13, 2017
Crawl a site to find 404, 301, 302, 500, etc responses
# Crawl a site's public urls to produce a csv list of urls and response codes
# This could be reduced into a single command, but I find it helpful to have a list of all urls.
# overview: crawl the site to add one url per line in a text file.
# NOTE: this must run and complete first.
# wget mirror's the site (including static files)
# grep files the line with the url on it.
# awk grabs the 3rd item (separated by spaces) and writes to urls.txt
wget --mirror -p 2>&1 | grep '^--' | awk '{ print $3 }' > urls.txt
MikeNGarrett / wp-config.php
Created Oct 14, 2017
Disable admin-ajax on the front-end of WordPress sites and cache the resulting 404.
View wp-config.php
strpos( $_SERVER['HTTP_REFERER'], 'wp-admin' ) === false &&
strpos( $_SERVER['REQUEST_URI'], 'admin-ajax.php' ) !== false
) {
header( 'Cache-Control: max-age=30000, must-revalidate' );
header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', strtotime( '+5000 minutes' ) ) . ' GMT' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s', strtotime( '-5000 minutes' ) ) . ' GMT' );
header( $_SERVER["SERVER_PROTOCOL"]." 404 Not Found" );
MikeNGarrett / functions.php
Created Oct 13, 2017
Set cache headers on WordPress 404 pages.
View functions.php
* Force cache headers on 404 pages and prevent WordPress from handling 404s.
* @param bool $preempt determines who handles 404s.
* @param obj $wp_query global query object.
function change_404_headers( $preempt, $wp_query ) {
if ( ! is_admin() && ! is_robots() && count( $wp_query->posts ) < 1 ) {
header( 'Cache-Control: max-age=30000, must-revalidate' );
View add_fields_to_bundle_programatically.php
* This file will demonstrate a method to export fields to code.
* You can use this to easily create fields using the UI, export to code
* and then use in a custom module. Upon installation of the module
* your fields and instances will already be set up.
// Create the fields you want using the Drupal UI.
// On the same site, go to