// 🔒 Block ?author=1 user enumeration attempts add_action(‘init’, function () { if (!is_admin() && isset($_GET[‘author’])) { wp_redirect(home_url(), 301); exit; } }); // 🛡️ Disable REST API user exposure add_filter(‘rest_endpoints’, function ($endpoints) { if (isset($endpoints[‘/wp/v2/users’])) { unset($endpoints[‘/wp/v2/users’]); } return $endpoints; });Continue reading
function custom_hide_shipping_when_free_shipping_is_available( $rates, $package ) { $free_shipping_exists = false; $local_pickup_exists = false; // Check if Free Shipping and/or Local Pickup exist foreach ( $rates as $rate_key => $rate ) { if ( ‘free_shipping’ === $rate->get_method_id() ) { $free_shipping_exists = true;…Continue reading
/* Plugin Name: Daily Cleanup with Report Description: Deletes selected post types, categories, and tags daily, stores summary data for digest reporting, and optionally sends an email confirmation. Version: 1.8 */ function delete_all_posts_categories_tags_with_report() { global $wpdb; // 🕒 Track last…Continue reading
/* Plugin Name: Daily Cleanup with Report Description: Deletes all posts, categories, and tags daily and emails a summary. Version: 1.4 */ function delete_all_posts_categories_tags_with_report() { global $wpdb; // 🕒 Track last cleanup execution time update_option( ‘last_run_cleanup’, current_time( ‘mysql’ ) );…Continue reading
add_action( ‘admin_notices’, function() { if ( ! current_user_can( ‘manage_options’ ) ) return; $cleanup_time = get_option( ‘last_run_cleanup’, ‘Never’ ); $purge_time = get_option( ‘last_run_purge’, ‘Never’ ); echo ‘ ‘; echo ‘ 🧹 Cleanup Last Ran: ‘ . esc_html( $cleanup_time ) . ‘‘;…Continue reading
add_action( ‘init’, function() { if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) { $compat = \Automattic\WooCommerce\Utilities\FeaturesUtil::is_plugin_compatible( ‘custom_order_tables’, ‘ajax-search-for-woocommerce-premium/ajax-search-for-woocommerce.php’ ); add_action( ‘admin_notices’, function() use ( $compat ) { echo ‘ ‘; echo ‘📋 WooCommerce reconhece o FiboSearch como ‘ . ($compat ? ‘compatível…Continue reading
// Est. Reading Time $reading_speed = 200; // 200 words per minute $content = get_post_field( ‘post_content’, get_the_id() ); $word_count = str_word_count( strip_tags( $content ) ); $reading_time = ceil( $word_count / $reading_speed ); function post_read_time_shortcode($atts) { echo ‘ Estimated reading time:…Continue reading
add_filter( ‘user_can_richedit’, ‘__return_false’, 50 );Continue reading
// 1) Renombrar + sanitizar SOLO cuando se sube un archivo (Media, ACF, REST, etc.) add_filter( ‘wp_handle_upload_prefilter’, ‘fc_upload_rename_prefilter’, 10 ); add_filter( ‘wp_handle_sideload_prefilter’, ‘fc_upload_rename_prefilter’, 10 ); function fc_upload_rename_prefilter( $file ) { $info = pathinfo( $file[‘name’] ); $ext = ! empty( $info[‘extension’]…Continue reading
// Display regular price excluding tax for specific user role add_filter(‘woocommerce_get_price_html’, ‘custom_display_regular_price_ex_tax_for_role’, 100, 2); function custom_display_regular_price_ex_tax_for_role($price_html, $product) { // Only run on frontend and for logged-in users if (is_admin() || !is_user_logged_in()) return $price_html; // Get current user and their roles…Continue reading