Skip to content

Instantly share code, notes, and snippets.

View bhwebworks's full-sized avatar

John Sundberg bhwebworks

View GitHub Profile
@bhwebworks
bhwebworks / remove-learndash-subscribers-who-are-not-enrolled.php
Created September 27, 2024 18:33
Removes users (subscribers) on a WordPress site who haven't yet enrolled in a LearnDash course
add_action( 'wp_loaded', 'bhww_remove_subscriber_users_not_enrolled' );
/**
* Remove users who are only subscribers and who are not yet enrolled in the course.
* Only runs when a WordPress admin page loads.
*/
function bhww_remove_subscriber_users_not_enrolled() {
// If this is not the WP admin, return early
if ( ! is_admin() )
return;
@bhwebworks
bhwebworks / block-spam-registrations-with-htaccess-unless-referred-from-specific-page
Last active September 27, 2024 18:23
Add this to .htaccess to block access to the WordPress default registration form unless referred from a specific page
#Block spam registrations (wp-login.php?action=register)
# Why? Server overloads and bounced emails
RewriteEngine On
#RewriteCond %{HTTP_REFERER} !^https://settigang.com/portal-access/?ld_register_id=580.*$ [NC]
RewriteCond %{HTTP_REFERER} !^https://settigang.com/portal-access/.*$ [NC]
RewriteCond %{THE_REQUEST} ^.*(wp-login.php\?action=register).* [NC]
RewriteRule ^(.*)$ - [F,L]
@bhwebworks
bhwebworks / block-spam-registrations-with-htaccess
Last active September 27, 2024 17:13
Add this to .htaccess to block access to the WordPress default registration form
#Block spam registrations (wp-login.php?action=register)
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*(wp-login.php\?action=register).* [NC]
RewriteRule ^(.*)$ - [F,L]
/**
* Adds "failed" status to Action Scheduler cleanup action.
*
* Default is "complete" and "canceled," leaving "failed" actions
* in the Action Scheduler to pile up indefinitely.
*
* Filter located in action-scheduler/classes/ActionScheduler_QueueCleaner.php
*
* @see https://wpcodebook.com/woocommerce-action-scheduler-cleanup-php/
*/
/* Convert the standard WooCommerce products list into a modern responsive grid. */
ul.products {
--grid-gap: 32px;
--auto-grid-min-size: 200px;
grid-template-columns: repeat(auto-fill, minmax(var(--auto-grid-min-size), 1fr));
grid-gap: var(--grid-gap);
display: grid;
}
ul.products:before{
content:unset!important;
@bhwebworks
bhwebworks / postmark-webhooks.php
Last active April 25, 2023 19:26
Automatic bounce and complaint management using Postmark to send MailPoet (and other) emails
add_action( 'admin_post_nopriv_process_postmark_events', 'bhww_core_postmark_events_webhook' );
/**
* Add a webhook to enable automated MailPoet bounce (or spam complaint or unsubscribe)
* handling from Postmark events JSON data
*
* Change this webhook URL for each site, and copy/paste into Postmark Webhook URL form:
* https://[YOUR WEBSITE URL]/wp-admin/admin-post.php?action=process_postmark_events
*
* Make sure there is not an admin redirect active,
* or if there is, modify it to allow webhook access
<?php
/**
* Gravity Wiz // Gravity Forms // User Registration // Skip Registration if Email Exists
*
* If submitted email is already registered, skip registration.
*
* @version 0.4
* @author David Smith <david@gravitywiz.com>
* @license GPL-2.0+
@bhwebworks
bhwebworks / remove-woo-scripts.php
Created April 11, 2020 21:59 — forked from jan-koch/remove-woo-scripts.php
Remove WooCommerce related resources except on WooCommerce-based pages (products, cart, checkout, etc). Use on a testing environment before pasting this into your live website!
/**
* This code snippet removes JavaScript and CSS files loaded from WooCommerce if they are not necessary.
*
* Please test this on a staging copy of your website before putting this into the functions.php of your live website.
*/
add_action( 'wp_enqueue_scripts', 'my_remove_woo_assets', 99 );
function my_remove_woo_assets() {
if ( function_exists( 'is_woocommerce' ) ) { // Check if Woo is installed.
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) { // Only run on non-Woo pages.
// Remove unnecessary stylesheets.
@bhwebworks
bhwebworks / all_fields_extra_options.php
Created December 1, 2016 02:59
The Gravity Forms {all_fields} merge tag in notifications includes all fields which had data entered, it doesn't include HTML fields, Section Break descriptions, nor does it allow you to omit fields from the notification. By adding the following code to your themes functions.php file you will gain the ability to include HTML fields, and Section …
/**
* to exclude field from notification add 'exclude[ID]' option to {all_fields} tag
* 'include[ID]' option includes HTML field / Section Break field description / Signature image in notification
* see http://www.gravityhelp.com/documentation/page/Merge_Tags for a list of standard options
* example: {all_fields:exclude[2,3]}
* example: {all_fields:include[6]}
* example: {all_fields:include[6],exclude[2,3]}
*/
add_filter( 'gform_merge_tag_filter', 'all_fields_extra_options', 11, 5 );
function all_fields_extra_options( $value, $merge_tag, $options, $field, $raw_value ) {
// Execute late to catch 'clone' and 'new draft' (Duplicate Post plugin)
add_filter( 'post_row_actions', 'bhww_core_remove_quick_edit_options', 100, 2 );
add_filter( 'page_row_actions', 'bhww_core_remove_quick_edit_options', 100, 2 );
function bhww_core_remove_quick_edit_options( $actions, $post ) {
if ( current_user_can( 'update_core' ) )
return $actions;
global $post;