Skip to content

Instantly share code, notes, and snippets.

View sabrina-zeidan's full-sized avatar

Sabrina Zeidan sabrina-zeidan

View GitHub Profile
@sabrina-zeidan
sabrina-zeidan / ti_populate_wishlist.php
Last active September 25, 2025 20:10
TI Wishlist plugin add random products to users wishlists
<?php
//https://example.com/?add_to_wishlist_user=1&add_to_wishlist_product=5503
//https://example.com/?add_to_wishlist_user=1&add_random=5
function add_product_to_wishlist( $user_id, $product_id ) {
global $wpdb;
// 1. Get or create default wishlist for user
$wishlist = $wpdb->get_var( $wpdb->prepare(
"SELECT ID FROM {$wpdb->prefix}tinvwl_lists
@sabrina-zeidan
sabrina-zeidan / sz_ajax_logger.php
Created September 20, 2025 08:33
Save all AJAX queries in 3 logs
<?php
add_action('shutdown', function() {
global $wpdb;
if ( empty($wpdb->queries) ) {
return;
}
$timestamp = date('Y-m-d H:i:s');
@sabrina-zeidan
sabrina-zeidan / posts_with_no_thumbs.php
Created July 29, 2024 16:57
Get all post with no thumbnails [WordPress]
// Get posts with no thumbnails
//add_action('wp_head', 'sz_posts_without_thumbs');
function sz_posts_without_thumbs() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids',
'no_found_rows' => true,
'ignore_sticky_posts' => true,
@sabrina-zeidan
sabrina-zeidan / compare_cat_queries.php
Created July 29, 2024 15:55
Compare performance of query that retrieves posts by category [WordPress]
//SZ Compare queries performance
// Function to fetch and display random posts using the initial slow method
function fetch_random_posts_initial() {
$start_time = microtime(true);
$args = array(
'cat' => array(1, 9, 10, 11, 44, 94),
'posts_per_page' => 3,
'no_found_rows' => true,
'ignore_sticky_posts' => true,
@sabrina-zeidan
sabrina-zeidan / list_transients_by_prefix.php
Last active June 9, 2024 18:43
List or delete all transients with a specific prefix WordPress
function delete_transients_with_prefix( $prefix ) {
foreach ( get_transient_keys_with_prefix( $prefix ) as $key ) {
// delete_transient( $key );
echo "<br>". $key." ".get_transient( $key );
}
}
/**
* Gets all transient keys in the database with a specific prefix.
*
@sabrina-zeidan
sabrina-zeidan / list_all_hooks.php
Created December 20, 2023 15:38
List all hooks firing in the order [WordPress]
//This goes in functions.php or plugin file or wherever
function dump_hook( $tag, $hook ) {
ksort($hook);
echo "<pre>>>>>>\t$tag<br>";
foreach( $hook as $priority => $functions ) {
echo $priority;
@sabrina-zeidan
sabrina-zeidan / .hatccess
Created September 27, 2023 08:33
webp redirection on nexcess servers
RewriteEngine On
# Check if the request is for a PNG or JPEG file
RewriteCond %{REQUEST_FILENAME} \.(png|jpe?g)$
# Check if a WebP version of the file exists
RewriteCond %{REQUEST_FILENAME}.webp -f
# Redirect to the WebP version of the file
RewriteRule ^(.+)\.(png|jpe?g)$ $1.$2.webp [NC,L]
@sabrina-zeidan
sabrina-zeidan / test_queries_time.php
Last active February 12, 2024 19:06
Performance of a few common database queries [WordPress]
//Measure performance of some WP funcitons
$startTime = microtime(true);
$guarded_pages = get_posts([
'posts_per_page' => 100,
'no_found_rows' => true,
'post_type' => SpeedGuard_Admin::$cpt_name,
'post_status' => 'publish',
'fields' => 'ids'
] );
@sabrina-zeidan
sabrina-zeidan / sz_repeat_purchase_wtf.php
Last active February 23, 2023 01:20
Disable repeat purchase WooCommerce [WordPress]
/** Disable repeat purchase V 22.20 7:40 -- on Adding to Cart check **/
add_filter( 'woocommerce_add_to_cart_validation', 'limit_cart_items_from_category', 10, 5 );
function limit_cart_items_from_category ( $passed, $product_id, $quantity, $variation_id = 0, $variations = null ){
$current_product_id = ($variation_id === 0) ? $product_id : $variation_id;
// Loop through cart items checking if the product is already in cart
foreach ( WC()->cart->get_cart() as $cart_item ){
if( $cart_item['data']->get_id() == $current_product_id ) {
wc_add_notice( __('This product is already in your cart.', 'woocommerce' ), 'error' );
return false;
@sabrina-zeidan
sabrina-zeidan / webp_for_site.conf
Last active January 9, 2023 19:43
Serve WebP without plugin straight from the server
upstream php {
{{#each fastcgi_servers}}
server {{this}};
{{/each}}
}
# SZ START
# Check if client is capable of handling webp
map $http_accept $webp_suffix {
default "";