Skip to content

Instantly share code, notes, and snippets.

🤘
Rocking this project.

Mike Garrett MikeNGarrett

🤘
Rocking this project.
Block or report user

Report or block MikeNGarrett

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@MikeNGarrett
MikeNGarrett / post-list.sql
Created Jun 18, 2019
Mysql query to list all WordPress posts with categories and tags
View post-list.sql
SELECT
cat_posts.ID as ID,
cat_posts.post_title as Title,
cat_posts.post_date as Published,
CASE
WHEN cat_term_taxonomy.taxonomy = 'category' THEN GROUP_CONCAT(DISTINCT cat_terms.name SEPARATOR ', ')
ELSE ""
END
as Categories,
CASE
@MikeNGarrett
MikeNGarrett / phpcs-compatibility.sh
Last active Jan 28, 2019
Test site compatibility with a specific version of PHP
View phpcs-compatibility.sh
# 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
MikeNGarrett / phpcs-config.sh
Last active Mar 22, 2019
PHPCS config for multiple installed paths - WordPress, Drupal, PHP Compatibility
View phpcs-config.sh
# 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
MikeNGarrett / utility.sh
Created Dec 13, 2017
Crawl a site to find 404, 301, 302, 500, etc responses
View utility.sh
# 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 https://domain.com/ 2>&1 | grep '^--' | awk '{ print $3 }' > urls.txt
@MikeNGarrett
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
<?php
if(
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" );
die;
@MikeNGarrett
MikeNGarrett / functions.php
Created Oct 13, 2017
Set cache headers on WordPress 404 pages.
View functions.php
<?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
<?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 example.com/devel/php
@MikeNGarrett
MikeNGarrett / devel-tool-export-field.php
Created Oct 10, 2017
Export a Drupal 7 field definition for use in custom modules.
View devel-tool-export-field.php
<?php
// Found: https://steindom.com/articles/exporting-and-creating-field-definitions-drupal-7
// My new favorite developer because of this, "Now that you understand how it works, let me show you some easy tricks to incorporate this into your development workflow."
// Fill in these with your desired field details.
$entity_type = '';
$field_name = 'field_';
$bundle_name = '';
$info_config = field_info_field($field_name);
View gist:d8ad36464aaac432c22322ef9afb99f7
<?php
add_filter('the_content','add_my_content');
function add_my_content($content) {
$my_custom_text = '<hr><div class="patreonpara"><p><em>PARAGRAPH TEXT</em></p><a href="LINKURL" data-patreon-widget-type="become-patron-button" class="patreonbutton"><img src="FILEURL"></a></div>';
$my_custom_text_other = 'something else';
if(is_single() && !is_home()) {
if(in_category('videos')) {
$content .= $my_custom_text_other;
} else {
$content .= $my_custom_text;
@MikeNGarrett
MikeNGarrett / terminus-quick-tips.sh
Last active May 3, 2018
Quick tips for Pantheon's implementation of WordPress CLI.
View terminus-quick-tips.sh
# Pantheon's Terminus is awesome, but it can be frustrating when you're first getting used to the syntax.
# Some quick tips follow.
#
# The following applies for Terminus v1.4+
#
# When specifying WP CLI commands to run, separate the terminus commands from the wp cli commands with 2 dashes:
terminus remote:wp sitename.env -- command-name --flag=value "wp-content/path/to/file-name.ext"
# It also helps to wrap paths in double quotes.
You can’t perform that action at this time.