Skip to content

Instantly share code, notes, and snippets.

View rmorse's full-sized avatar

Ross Morsali rmorse

View GitHub Profile
@rmorse
rmorse / search-filter-dequeue-ugc-css.php
Created October 28, 2024 19:41
Dequeue styles presets CSS from Search & Filter v3
<?php
add_filter( 'search-filter/frontend/enqueue_styles', 'search_filter_remove_ugc_styles' );
/**
* Remove UGC styles (Styles Presets CSS file)
*/
function search_filter_remove_ugc_styles( $styles ) {
$position = array_search( 'search-filter-ugc-styles', $styles, true );
@rmorse
rmorse / search-filter-v3-generate-blocks-query-loop.php
Last active October 25, 2024 16:27
Search & Filter v3 + Generate blocks query loop
<?php
// Adds Search & Filter filtering to a Generate blocks query loop.
add_filter( 'generateblocks_query_loop_args', function ( $query_args, $attributes ) {
// Replace `1234` with your S&F query ID.
$query_args['search_filter_query_id'] = 1234;
return $query_args;
}, 10, 2 );
?>
/**
* WordPress dependencies
*/
import { createReduxStore, register, controls } from '@wordpress/data';
import apiFetch from '@wordpress/api-fetch';
import { addQueryArgs } from '@wordpress/url';
export const STORE_NAME = 'search-filter/settings';
const getUniqueKey = ( args ) => {
@rmorse
rmorse / block-edit-unique-id.js
Last active February 20, 2023 05:36
Generate unique IDs (as attributes) for blocks - ensure that duplicating a block will generate a new ID
/**
* WordPress dependencies
*/
import { useSelect, dispatch } from '@wordpress/data';
import { useLayoutEffect } from '@wordpress/element';
import './store';
const storeName = 'plugin-name/block';
function Edit( { attributes, setAttributes, clientId } ) {
// Get the stored attribute field ID.
@rmorse
rmorse / class-handlebars-helpers.php
Last active May 3, 2022 09:18
Adds support for `if truthy`, `if falsy`, `if equals` and `if not equals` to Handlebars PHP - https://github.com/salesforce/handlebars-php
<?php
/**
* Adds helpers to Handlebars to support the following expressions:
*
* If truthy - `{{#if_truthy varName}}...{{/if_truthy}}`
* If falsy - `{{#if_falsy varName}}...{{/if_falsy}}`
* If equal - `{{#if_equal varName anotherVar}}...{{/if_equal}}`
* If not equal - `{{#if_not_equal varName anotherVar}}...{{/if_not_equal}}`
*
* Supports the PHP implementation of Handlebars found here: https://github.com/salesforce/handlebars-php
// re init layout after ajax request
$( document ).on( "sf:ajaxfinish", ".searchandfilter", function( e, data ) {
if ( window.elementorFrontend && window.elementorFrontend.elementsHandler && window.elementorFrontend.elementsHandler.runReadyTrigger) {
var runReadyTrigger = window.elementorFrontend.elementsHandler.runReadyTrigger;
runReadyTrigger( data.targetSelector );
// NEW - re-init elementor widgets inside the new results:
var ajaxTarget = $( data.targetSelector );
if ( ajaxTarget.length > 0 ) {
ajaxTarget.find( '.elementor-widget' ).each( function () {
@rmorse
rmorse / react-router-dom-v.6.02.prompt.blocker.js
Last active November 13, 2024 16:02
Adds back in `useBlocker` and `usePrompt` to `react-router-dom` version 6.0.2 (they removed after the 6.0.0 beta, temporarily)
/**
* These hooks re-implement the now removed useBlocker and usePrompt hooks in 'react-router-dom'.
* Thanks for the idea @piecyk https://github.com/remix-run/react-router/issues/8139#issuecomment-953816315
* Source: https://github.com/remix-run/react-router/commit/256cad70d3fd4500b1abcfea66f3ee622fb90874#diff-b60f1a2d4276b2a605c05e19816634111de2e8a4186fe9dd7de8e344b65ed4d3L344-L381
*/
import { useContext, useEffect, useCallback } from 'react';
import { UNSAFE_NavigationContext as NavigationContext } from 'react-router-dom';
/**
* Blocks all navigation attempts. This is useful for preventing the page from
* changing until some condition is met, like saving form data.
<?php
/**
* Output an ACF post relationship field type using a shortcode:
* [ca_acf_relationship_field field="field_name"]
* You can also pass `post_id` as an attribute
*
* Works with Post Object and Relationship fields, when the return
* format is both post object and post ID
*
* This code assumes you are copying this into functions.php of
@rmorse
rmorse / add-custom-editor-colors.php
Last active January 7, 2024 02:58
Add custom colors to the WordPress editor via `add_theme_support`
<?php
/**
* Add custom colors to the WordPress editor via `add_theme_support`
*
* This takes the existing colours (if your theme or a plugin has set any)
* and combines them with a new set of colours defined in the function
*
* New colours should be visible in the various color pickers found in
* WordPress admin
*/
@rmorse
rmorse / change-prefix.php
Last active October 26, 2020 09:22
Bulk change WordPress table prefix
<?php
// Warning: There is nothing safe about this script - don't use in production - make a backup. Always delete when finished.
/*
* Use this script to change the table prefix (renames the tables) in your WordPress install.
* Instructions:
* - Put this in a subdirectory from the root of your install - ie, create a new directory in the same folder as `wp-config.php`
and put this in it
* - Change the values `$old_prefix` and `$new_prefix` below, to match your requirements
* - Change the `$table_prefix` var in `wp-config.php` to your new prefix