Skip to content

Instantly share code, notes, and snippets.

@jnicol
jnicol / functions.php
Last active January 7, 2019 10:31
Sanitize WordPress filenames on upload
/**
* WordPress allows UTF8 characters such as copyright symbol in filenames but these break in Safari
*
* @see https://wordpress.org/support/topic/uploaded-image-with-accents-in-name-image-dont-show-in-safari-6 for original function
* @see https://core.trac.wordpress.org/ticket/22363 for progress on fixing this bug
*
* #wordpress
*/
function sanitize_filename_on_upload($filename) {
$ext = end(explode('.',$filename));
@jnicol
jnicol / functions.php
Last active August 29, 2015 14:17
WordPress: Customize the number of posts displayed per Custom Post Type
/**
* Customize number of posts displayed per Custom Post Type
*
* @see https://mondaybynoon.com/wordpress-posts-per-page-per-custom-post-type/
*/
function custom_posts_per_page($query) {
if(!is_admin()) {
switch ($query->query_vars['post_type']) {
case 'name_of_cpt1':
$query->query_vars['posts_per_page'] = -1;
var isIE = /*@cc_on!@*/false || !!document.documentMode, // Internet Explorer 6-11
isEdge = !isIE && !!window.StyleMedia; // Edge 20+
if(isIE || isEdge) {
// do something...
}
@jnicol
jnicol / menu-hover.js
Last active February 25, 2019 23:56
Open/close a dropdown menu on hover.
/**
* Open/close a dropdown menu on hover.
*
* The menu does not need to be a child or sibling of the button, but there should be no gap
* on screen between the bottom of the button and the top of the menu.
*
* The menu will remain open until the user's mouse leaves both the menu and button.
*
* Requires jQuery.
*/
@jnicol
jnicol / block-editor-scripts.js
Last active January 18, 2024 16:00
Register/unregister WordPress Gutenberg block styles
/**
* Scripts to run when in WordPress Gutenberg editor
*
* Unregister any block styles we don't want user to be able to select
* or register our own custom block styles.
*/
wp.domReady( () => {
// Unregister any block styles we don't want user to be able to select
wp.blocks.unregisterBlockStyle( 'core/quote', 'default' );
wp.blocks.unregisterBlockStyle( 'core/quote', 'large' );
@jnicol
jnicol / wp-menu-no-ul.php
Created April 8, 2019 01:53
No <ul> or container for a WordPress menu. Useful if you want to manually add <li>'s to your menu.
<?php
wp_nav_menu( array(
'theme_location' => 'my-theme-location',
'depth' => 1,
'container' => '',
'container_class' => '',
'menu_class' => '',
'items_wrap' => '%3$s'
));
?>
@jnicol
jnicol / remove-wp-image-sizes.php
Last active November 18, 2020 21:52
Remove WordPress default image sizes to save disk space
<?php
function remove_default_image_sizes( $sizes) {
// sizes defined in media settings
unset( $sizes['thumbnail']);
unset( $sizes['medium']);
unset( $sizes['large']);
// auto-generated images since WP 5.3
unset( $sizes['medium_large']);
unset( $sizes['1536x1536']);
unset( $sizes['2048x2048']);
@jnicol
jnicol / polyfills.html
Created March 20, 2020 01:05
polyfill.io for old browsers only
<!--
Only load polyfills for old browsers
@see https://devhints.io/polyfill.io
@see https://polyfill.io
-->
<script>if(!(window.Promise&&[].includes&&Object.assign&&window.Map)){document.write('<script src="https://cdn.polyfill.io/v3/polyfill.min.js"></scr'+'ipt>')}</script>
<!-- Same as above, but also loads Fetch API polyfill -->
<script>if(!(window.fetch&&window.Promise&&[].includes&&Object.assign&&window.Map)){document.write('<script src="https://cdn.polyfill.io/v3/polyfill.min.js?features=default,fetch"></scr'+'ipt>')}</script>
/* source: https://stackoverflow.com/a/43763137/315045 */
ol, ul {
padding-left: 0;
}
li {
list-style: none;
padding-left: 1.25rem;
position: relative;
@jnicol
jnicol / copy-to-clipboard.js
Created February 23, 2022 23:20
Copy to clipboard
function copyToClipboard() {
const cb = navigator.clipboard;
const el = document.getElementById('my-element');
cb.writeText(el.innerText);
}