Skip to content

Instantly share code, notes, and snippets.

View doubleedesign's full-sized avatar

Leesa Ward doubleedesign

View GitHub Profile
@doubleedesign
doubleedesign / ninja-group-signup.php
Created April 22, 2019 13:02
Ninja Forms + Groups. When a user registers for an account using Ninja Forms User Management (https://ninjaforms.com/extensions/user-management), assign them to a group (https://wordpress.org/plugins/groups) according to the value of a drop-down selection which matches the "slug" format equivalent of the group name.
<?php
/**
* Get all groups
* Utility function
* @author Antonio Blanco
* @see https://github.com/eggemplo/Groups-Utilities/blob/master/get_groups.php
*/
function doublee_get_all_groups() {
global $wpdb;
$groups_table = _groups_get_tablename('group');
@doubleedesign
doubleedesign / register-customised-woocommerce-filter-widgets.php
Last active April 22, 2019 12:30
Customise HTML markup of WooCommerce filter widgets: Add class according to the attribute it's being used for; add logo (using ACF field on the attribute terms) if it's the "brand" attribute filter. Could be modified to display differently, output additional data according to which attribtue it is, etc.
/**
* Widget areas
*
* @package WordPress
* @subpackage Promo Printing
* @since Promo Printing 1.0
*/
if (class_exists('Woocommerce')) {
@doubleedesign
doubleedesign / convert-milliseconds.js
Last active April 22, 2021 01:34
Timed pop-up using Zurb Foundation Reveal (modal); stores whether the user has dismissed it or already subscribed in local storage. This example is built in WordPress using ACF to get values of what to store, when to show up etc (and Ninja Forms for the form but of course it doesn't have to be used for a form).
/**
* Convert milliseconds to the desired format
* @param milliseconds
* @param format
* @returns {*}
* @see https://gist.github.com/flangofas/714f401b63a1c3d84aaa
*/
function convertMilliseconds(milliseconds, format) {
var total_days, total_hours, total_minutes, total_seconds;
@doubleedesign
doubleedesign / shortcode-button.js
Created December 12, 2018 04:23
WordPress button shortcode builder
(function() {
tinymce.PluginManager.add('button', function( editor, url ) {
// Add button to the editor
editor.addButton('button', {
icon: 'link',
text: 'Button',
tooltip: 'Insert button',
onclick: function() {
@doubleedesign
doubleedesign / javascript-delayed-event.js
Created December 9, 2018 09:16
How to delay a JavaScript event within an event listener
function myDelayedThing() {
var mySelectors = document.querySelectorAll('.something');
// Loop through mySelectors
for(var i = 0; i < menuLinks.length; i++) {
// Add 'open' class on mouseover
menuLinks[i].addEventListener('mouseover', function() {
this.classList.add('open');
@doubleedesign
doubleedesign / breadcrumbs-list.php
Created December 4, 2018 00:52
Mark up Yoast breadcrumbs as an unordered list
<?php
/**
* Filter the output of Yoast breadcrumbs so each item is an <li> with schema markup
* @param $link_output
* @param $link
*
* @return string
*/
function doublee_filter_yoast_breadcrumb_items( $link_output, $link ) {
@doubleedesign
doubleedesign / excerpt-metabox-to-top.php
Created December 4, 2018 00:51
Move the WordPress Excerpt metabox to the top of post and page edit screens
/**
* Move the excerpt metabox to the top
* @param $post_type
*/
function doublee_custom_excerpt_metabox( $post_type ) {
if(in_array($post_type, array('post','page'))) {
add_meta_box(
'excerpt_meta', __( 'Excerpt' ), 'post_excerpt_meta_box', $post_type, 'temp', 'high'
);
}
@doubleedesign
doubleedesign / accessibility-admin-notice.php
Created December 4, 2018 00:48
Add a collapsible admin notice with content accessibility tips to posts and pages
function doublee_accessibility_admin_notice() {
$screen = get_current_screen();
if(in_array($screen->id, array('post', 'page'))) { ?>
<div class="notice notice-warning notice-accessibility">
<div id="accessibility-tips" class="meta-box-sortables">
<div id="accessibility_meta" class="postbox closed">
<button type="button" class="handlediv" aria-expanded="false">
<span class="screen-reader-text">Toggle panel: Accessibility Tips</span>
<span class="toggle-indicator" aria-hidden="true"></span>
</button>
@doubleedesign
doubleedesign / change-excerpt-explanation.php
Created September 5, 2018 02:37
Change the explanatory text in the WordPress excerpt meta box, according to post type.
/**
* Change the excerpt explanation in the backend
* @param $translated_text
* @param $text
* @param $domain
*
* @return string
*/
function doublee_change_excerpt_explanation( $translated_text, $text, $domain ) {
$post_type = get_post_type();
@doubleedesign
doubleedesign / setHeightToHighest.js
Created April 24, 2018 02:43
Get the heights of all elements that match the given selector, and set all of them to the height of the highest one
/**
* Get the heights of all elements that match the given selector, and set all of them to the height of the highest one
* Note: According to https://coderwall.com/p/kvzbpa/don-t-use-array-foreach-use-for-instead, a for loop is faster than forEach
* @param selector - the CSS selector to set to the highest
*/
function setHeightToHighest(selector) {
// Get our items - returns a NodeList of elements
var items = document.querySelectorAll(selector);
// Create an array to store the heights
var heights = [];