This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { useState, useEffect, Dispatch, SetStateAction } from 'react'; | |
export function useLocalStorage<T>(key: string, defaultValue: T): { value: T; setValue: Dispatch<SetStateAction<T>> } { | |
const [value, setValue] = useState(() => { | |
return localStorage?.getItem(key) ? JSON.parse(localStorage.getItem(key)) : defaultValue; | |
}); | |
useEffect(() => { | |
localStorage.setItem(key, JSON.stringify(value)); | |
}, [key, value]); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { MutableRefObject, useMemo, useEffect, useState } from 'react'; | |
interface Dimensions { | |
width: number; | |
height: number; | |
} | |
export function useResize(ref: MutableRefObject<HTMLElement | undefined>, deps: unknown[]): Dimensions { | |
const [width, setWidth] = useState<number>(0); | |
const [height, setHeight] = useState<number>(0); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$spacing: ( | |
xs: 0.25rem, | |
sm: 0.5rem, | |
md: 0.75rem, | |
lg: 1rem, | |
xl: 1.5rem, | |
xxl: 2rem | |
); | |
$colours: ( |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import savedArtists from '../json-data/test/artists.json' assert { type: 'json'}; | |
import { getType } from './typechecker'; | |
// NOTE: These tests are a work in progress, | |
as I have so far only completed work with the "Artist" type on the project at the time of writing | |
describe('Typechecker', () => { | |
it('Correctly identifies and Artist', () => { | |
const item = savedArtists[0]; | |
const type = getType(item); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Job listings functionality for Client Website | |
* Note: Requires Ninja Forms plugin | |
* Note: Truncated for use in a gist to demonstrate unhooking a Ninja Forms function | |
* | |
* @since 1.0.0 | |
* @package MyPlugin | |
* @subpackage MyPlugin/admin | |
*/ | |
class MyPlugin_Jobs extends MyPlugin_Settings { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Custom Image Catalog script that runs for all subfolders in a selected folder. | |
* Lays out each folder of images in the specified number of rows and columns, 2 folders per page, shows an alert if there's more images than allowed for, | |
* labels each group with the folder name, creates paragraph styles for the captions and group headings, and saves the file. | |
* | |
* Based on the built-in Image Catalog script but modified and simplified (e.g. hard-coding the settings) for my use case. | |
* Could be modified to suit different numbers of folders per page, different image quantities etc by changing the settings at the top | |
* and making tweaks to other code as needed. | |
* | |
* Could also be extended to show one dialog for settings prior to the loop, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Register Custom Post Type | |
// Note: Using woocommerce_after_register_taxonomy hook instead of init because we're using a product attribute taxonomy with this CPT | |
function doublee_cpt_case_study() { | |
$labels = array( | |
'name' => _x('Case studies', 'Post Type General Name', 'doubleedesign'), | |
'singular_name' => _x('Case study', 'Post Type Singular Name', 'doubleedesign'), | |
'menu_name' => __('Case studies', 'doubleedesign'), | |
'name_admin_bar' => __('Case study', 'doubleedesign'), |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function doublee_log_all_actions() { | |
foreach($GLOBALS['wp_actions'] as $action => $count) { | |
error_log(print_r($action, true)); | |
} | |
} | |
add_action('shutdown', 'doublee_log_all_actions'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Add role drop-down to orders screen | |
*/ | |
function doublee_add_order_user_role_filter_selectbox() { | |
global $typenow, $wp_query; | |
if (in_array($typenow, wc_get_order_types('order-meta-boxes'))) : | |
$user_role = ''; |