Skip to content

Instantly share code, notes, and snippets.

View donnamcmaster's full-sized avatar
🏠
Working from home

Donna McMaster donnamcmaster

🏠
Working from home
View GitHub Profile
@donnamcmaster
donnamcmaster / wp-bootstrap-dropdown-menu-shortcode.php
Last active September 20, 2020 07:23
WP shortcode: Bootstrap 4 dropdown menu button
<?php
/**
* 'button-menu' shortcode
* - insert a simple dropdown button menu
* - ref: https://getbootstrap.com/docs/4.2/components/dropdowns/
* - 'menu' parm should match a menu location
* - e.g., register_nav_menu( 'learning_grants', 'Learning Enrichment Grants' );
*/
add_shortcode( 'button-menu', function( $atts, $content=null ) {
extract( shortcode_atts(
@donnamcmaster
donnamcmaster / wp-filter-shortcode-content.php
Last active March 3, 2020 00:04
WordPress: filter for the_content to remove excess tags around shortcodes
<?php
// get rid of junk <p> and <br> tags TinyMCE inserts around shortcodes
add_filter( 'the_content', function ( $content ) {
$array = [
'<p>[' => '[',
']</p>' => ']',
']<br />' => ']',
']<br>' => ']',
'<p>&nbsp;</p>' => '',
];
@donnamcmaster
donnamcmaster / first_leaf.php
Last active March 3, 2020 00:03
PHP utility: find the first non-array element
/**
* First Leaf
* - returns the first non-array element (singular or object).
* - handy when you're not sure whether information has been stored
* as a singular value ('item') or 1-element array (0=>'item').
* - the key() function gives us the first key in the array.
* - uses recursion to go deeper if necessary; if that's not
* what you want, you may need a different solution.
*/
public static function first_leaf ( $value ) {
@donnamcmaster
donnamcmaster / phone-format-basic.php
Last active March 3, 2020 00:00
very basic phone number format for display
<?php
/**
* Phone Number Format
* - used to display phone numbers from a WooCommerce database
* - assumes local US numbers
* - very basic: removes non-digit characters, +1, adds dashes
* - props for base function to https://arjunphp.com/format-phone-number-using-php/
* - props for "+1" to https://simplysmartmedia.com/2013/11/php-phone-number-formatting-function/
*/
private static function phone_number_format ( $number ) {
@donnamcmaster
donnamcmaster / strip-shortcode-ptags.php
Last active May 1, 2019 19:07
WordPress: process content outside the loop; get rid of extra <p> tags around shortcodes
/* props to Thomas Griffin
https://thomasgriffin.io/remove-empty-paragraph-tags-shortcodes-wordpress/
*/
$extra_junk = array(
'<p>[' => '[',
']</p>' => ']',
']<br />' => ']',
']<br>' => ']',
'<p>&nbsp;</p>' => '',
@donnamcmaster
donnamcmaster / wp-revision-filter.php
Last active April 21, 2019 09:08
WordPress filter to set number of revisions based on post type
/**
* minimize unnecessary revision storage (based on post type)
*/
add_filter( 'wp_revisions_to_keep', function ( $nr_revisions, $post ) {
switch ( $post->post_type ) {
case 'page':
case 'movie':
case 'article':
case 'story':
$nr_revisions = 3;
@donnamcmaster
donnamcmaster / wp-woocommerce-utility-urls.php
Last active April 21, 2019 09:01
WordPress: URLs for WooCommerce utility pages (cart, checkout, etc)
<!-- Get and display the My Account page url -->
<?php echo get_permalink( wc_get_page_id( 'checkout' ) ); ?>
<!-- Get and display the Cart page url -->
<?php echo get_permalink( wc_get_page_id( 'cart' ) ); ?>
<!-- Get and display the Shop page url -->
<?php echo get_permalink( wc_get_page_id( 'shop' ) ); ?>
<!-- Get and display the Checkout page url -->
$css_timestamp = filemtime( get_stylesheet_directory() . '/assets/css/app.css' );
wp_enqueue_style( 'child_app', get_stylesheet_directory_uri() . '/assets/css/app.css', null, $css_timestamp );
@donnamcmaster
donnamcmaster / icon-from-svg-code.sccs
Created July 29, 2018 03:57
use Open Iconic SVG definition to define an icon
/* ==========================================================================
SVG to CSS Example: Breadcrumbs "Home Icon"
- an example of using the Open Iconic SVG code to create a "home" icon
- this is the same method as used in the Bootstrap 4 _variables.sccs file
- started by downloading the distro from https://useiconic.com/open
- found the 'home' icon SVG and copied its path code
- then pasted the path code into one of the Bootstrap icon definitions &
changed the fill color
========================================================================== */
$link-color: blue;
@donnamcmaster
donnamcmaster / wp-allow-view-post-editing.php
Last active April 22, 2018 19:10
WordPress: when a post is being edited, give a warning but allow others to view edit screen. Useful for remote training situations.
if ( is_admin() ) {
// soften post lock to post warning
add_filter( 'show_post_locked_dialog', '__return_false' );
add_filter( 'wp_check_post_lock_window', '__return_false' );
}