<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>minimamente</title>
	<atom:link href="https://www.minimamente.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.minimamente.com/</link>
	<description>WordPress, WooCommerce, CSS, tutorial ed esempi di codice.</description>
	<lastBuildDate>Sat, 13 Dec 2025 07:21:21 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.minimamente.com/wp-content/uploads/2020/06/cropped-logo_1024_favicoon-32x32.png</url>
	<title>minimamente</title>
	<link>https://www.minimamente.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Collegarsi via SSH con cPanel</title>
		<link>https://www.minimamente.com/collegarsi-via-ssh-con-cpanel/</link>
					<comments>https://www.minimamente.com/collegarsi-via-ssh-con-cpanel/#respond</comments>
		
		<dc:creator><![CDATA[miniMAC]]></dc:creator>
		<pubDate>Sat, 13 Dec 2025 07:21:19 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.minimamente.com/?p=5605</guid>

					<description><![CDATA[<p>L’accesso SSH è uno degli strumenti più utili quando lavori su un hosting cPanel: ti permette di collegarti al server in modo sicuro, eseguire comandi, trasferire file e lavorare in modo molto più rapido rispetto a FTP. In questo articolo vediamo come creare e autorizzare una chiave SSH direttamente da cPanel, passo dopo passo. 1. [&#8230;]</p>
<p>L'articolo <a href="https://www.minimamente.com/collegarsi-via-ssh-con-cpanel/">Collegarsi via SSH con cPanel</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>L’accesso SSH è uno degli strumenti più utili quando lavori su un hosting cPanel: ti permette di collegarti al server in modo sicuro, eseguire comandi, trasferire file e lavorare in modo molto più rapido rispetto a FTP.</p>



<p>In questo articolo vediamo <strong>come creare e autorizzare una chiave SSH direttamente da cPanel</strong>, passo dopo passo.</p>



<h2 class="wp-block-heading">1. Accedere alla sezione SSH di cPanel</h2>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="546" src="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_1-1024x546.png" alt="" class="wp-image-5606" srcset="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_1-1024x546.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_1-300x160.png 300w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_1-768x409.png 768w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_1-600x320.png 600w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_1.png 1403w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Una volta entrato in cPanel:</p>



<ul class="wp-block-list">
<li>Vai nella sezione <strong>Sicurezza</strong></li>



<li>Clicca su <strong>Accesso SSH</strong></li>
</ul>



<p>Da qui potrai gestire tutte le chiavi SSH associate al tuo account.</p>



<h2 class="wp-block-heading">2. Gestire le chiavi SSH</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="712" src="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_2-1024x712.png" alt="" class="wp-image-5607" srcset="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_2-1024x712.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_2-300x209.png 300w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_2-768x534.png 768w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_2-600x417.png 600w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_2.png 1532w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>All’interno della pagina <strong>Accesso SSH</strong>, clicca su <strong>Gestisci chiavi SSH</strong>.</p>



<p>Qui trovi due pulsanti principali:</p>



<ul class="wp-block-list">
<li><strong>Genera una nuova chiave</strong> → per creare una chiave direttamente su cPanel</li>



<li><strong>Importa chiave</strong> → se hai già una chiave SSH dal tuo computer</li>
</ul>



<p>In questa guida useremo la generazione diretta.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="650" src="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_5-1024x650.png" alt="" class="wp-image-5611" srcset="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_5-1024x650.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_5-300x190.png 300w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_5-768x487.png 768w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_5-1536x974.png 1536w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_5-600x381.png 600w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_5.png 1663w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Se trovi delle chiavi già presenti puoi anche eliminarle tutte e ricrearle.</p>



<h2 class="wp-block-heading">3. Generare una nuova chiave SSH</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="468" src="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_3-1024x468.png" alt="" class="wp-image-5609" srcset="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_3-1024x468.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_3-300x137.png 300w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_3-768x351.png 768w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_3-1536x702.png 1536w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_3-600x274.png 600w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_3.png 1663w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Clicca su <strong>Genera una nuova chiave</strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="693" src="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_4-1024x693.png" alt="" class="wp-image-5610" srcset="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_4-1024x693.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_4-300x203.png 300w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_4-768x520.png 768w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_4-1536x1040.png 1536w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_4-600x406.png 600w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_4.png 1663w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Ti verrà mostrato un form con questi campi:</p>



<ul class="wp-block-list">
<li><strong>Key Name</strong>: puoi lasciare il valore predefinito <code>id_rsa</code></li>



<li><strong>Password chiave (passphrase)</strong>: opzionale ma consigliata per maggiore sicurezza</li>



<li><strong>Tipo di chiave</strong>: lascia <strong>RSA</strong></li>



<li><strong>Dimensioni chiave</strong>: 2048 (ok per la maggior parte dei casi)</li>
</ul>



<p>Dopo aver compilato i campi, clicca su <strong>Genera chiave</strong>.</p>



<h2 class="wp-block-heading">4. Autorizzare la chiave SSH</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="472" src="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_6-1024x472.png" alt="" class="wp-image-5612" srcset="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_6-1024x472.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_6-300x138.png 300w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_6-768x354.png 768w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_6-1536x708.png 1536w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_6-600x277.png 600w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_6.png 1663w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dopo la generazione, tornerai alla lista delle chiavi.</p>



<p>Nella sezione <strong>Chiavi pubbliche</strong> vedrai la tua chiave (<code>id_rsa</code>) con stato:</p>



<ul class="wp-block-list">
<li><strong>not authorized</strong> → chiave non ancora utilizzabile</li>
</ul>



<p>Clicca su <strong>Gestione</strong> e poi su <strong>Authorize</strong>.</p>



<p>Quando vedi lo stato <strong>authorized</strong>, la chiave è pronta per essere usata.</p>



<h2 class="wp-block-heading">5. Scaricare la chiave privata</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="438" src="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_7-1024x438.png" alt="" class="wp-image-5613" srcset="https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_7-1024x438.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_7-300x128.png 300w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_7-768x329.png 768w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_7-1536x658.png 1536w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_7-600x257.png 600w, https://www.minimamente.com/wp-content/uploads/2025/12/accesso_ssh_7.png 1663w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Nella sezione <strong>Chiavi private</strong>:</p>



<ul class="wp-block-list">
<li>Clicca su <strong>Visualizza/Scarica</strong></li>



<li>Scarica la chiave privata (<code>id_rsa</code>)</li>
</ul>



<p>⚠️ <strong>Importante</strong>:</p>



<ul class="wp-block-list">
<li>Non condividere mai la chiave privata</li>



<li>Conservala in un posto sicuro</li>



<li>Su macOS va messa di solito in <code>~/.ssh/</code></li>
</ul>



<p>🤖 Ora su Mac da terminale esegui questo comando (<strong>ricordati di cambiare i comandi in base ai tuoi parametri</strong>)</p>



<ul class="wp-block-list">
<li><code>mkdir -p ~/.ssh</code> (Crea la cartella <code>.ssh</code> nella home se non esiste)</li>



<li><code>mv ~/Desktop/id_rsa ~/.ssh/id_rsa_tuonomechiave</code> (Sposta la chiave privata dal Desktop a <code>.ssh</code> e la rinomina)</li>



<li><code>chmod 600 ~/.ssh/id_rsa_tuonomechiave</code> Imposta i <strong>permessi corretti</strong> (solo tu puoi leggerla/scriverla). Senza questo SSH spesso rifiuta la chiave</li>
</ul>



<p>👉 Controllo veloce per vedere se tutto è ok:</p>



<p><code>ls -l ~/.ssh</code></p>



<p>Devi vedere qualcosa tipo:</p>



<p><code>-rw------- id_rsa_tuonomechiave</code></p>



<h2 class="wp-block-heading">6. Collegarsi via SSH</h2>



<p>Una volta scaricata la chiave privata, puoi collegarti al server con un comando simile:</p>



<p><code>ssh-i ~/.ssh/id_rsa username@tuodominio.it</code></p>



<p>Se hai impostato una <strong>passphrase</strong>, ti verrà richiesta al momento della connessione.</p>



<p>Fai un <code>ls</code> come <strong>comando</strong> per vedere se vedi cartelle ecc..</p>



<h2 class="wp-block-heading">Esempio pratico per caricare una cartella zippata e scompattarla su server</h2>



<p>Vediamo ora un esempio pratico, su come compattare in file zip una cartella di una installazione WP molto pesante come la &#8220;<em>uploads</em>&#8221; e vediamo poi come <strong>scompattare l&#8217;archivio via comando SSH</strong>.</p>



<h2 class="wp-block-heading">1. Comprimere la cartella</h2>



<p>Sul nostro mac andiamo da terminale con questo comando per creare un file zip compatibile con Linux.</p>



<p><code>cd wp-content</code></p>



<p>Il comando ci dice che andremo li in quel preciso percorso ma voi potete fare il vostro. Caricheremo la cartella &#8220;<em>uploads</em>&#8221; di WordPress che è molto pesante.</p>



<p>Fatto questo la trasformiamo con questo comando da terminale</p>



<p><code>ditto -c -k --sequesterRsrc --keepParent uploads uploads.zip</code></p>



<p>È un comando <strong>macOS</strong> per creare uno <strong>ZIP</strong> da Terminale e questo zip sarà <strong>compatibile al 100% con Linux</strong></p>



<p><strong>Spiegazione rapida:</strong></p>



<ul class="wp-block-list">
<li><code>ditto</code> → utility nativa macOS per copiare/archiviare</li>



<li><code>-c</code> → crea un archivio</li>



<li><code>-k</code> → formato <strong>ZIP</strong></li>



<li><code>--sequesterRsrc</code> → gestisce correttamente i <strong>resource fork</strong> macOS (niente file strani)</li>



<li><code>--keepParent</code> → mantiene la cartella <code>uploads</code> dentro lo zip</li>



<li><code>uploads</code> → cartella sorgente</li>



<li><code>uploads.zip</code> → file zip finale</li>
</ul>



<p>👉 Risultato: crea <code>uploads.zip</code> con dentro la cartella <code>uploads</code>, compatibile e pulito (ideale per server Linux/cPanel).</p>



<h2 class="wp-block-heading">2. Scompattare il file zip su server</h2>



<p>Da terminale accedi al sever via SSH</p>



<p><code>ssh-i ~/.ssh/id_rsa username@tuodominio.it</code></p>



<p>Ti muovi ora con i comandi cd o ls tra le varie cartelle. Per esempio vai nella cartella:</p>



<p><code>cd wp-content</code></p>



<p>E se il file è dentro wp-content/uploads.zip allora il prossimo comando sarà</p>



<p><code>UNZIP_DISABLE_ZIPBOMB_DETECTION=TRUE unzip -q uploads.zip</code></p>



<p>In modo silenzioso scompatterà perfettamente il file ZIP.</p>
<p>L'articolo <a href="https://www.minimamente.com/collegarsi-via-ssh-con-cpanel/">Collegarsi via SSH con cPanel</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.minimamente.com/collegarsi-via-ssh-con-cpanel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Convertire shortcode prodotti di WooCommerce in un carousel in Blocksy</title>
		<link>https://www.minimamente.com/convertire-shortcode-prodotti-di-woocommerce-in-un-carousel-in-blocksy/</link>
					<comments>https://www.minimamente.com/convertire-shortcode-prodotti-di-woocommerce-in-un-carousel-in-blocksy/#respond</comments>
		
		<dc:creator><![CDATA[miniMAC]]></dc:creator>
		<pubDate>Sun, 18 May 2025 07:34:29 +0000</pubDate>
				<category><![CDATA[Blocksy]]></category>
		<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://www.minimamente.com/?p=5576</guid>

					<description><![CDATA[<p>Ultimamente sto lavorando con Blocksy, un tema con il quale mi trovo bene e lo ritengo uno dei migliori al momento. Mi ritrovo però a dover lavorare anche con degli e-commerce fatti con WooCommerce e a quanto pare non esiste un blocco per gutenberg fatto bene che mostri un carousel di prodotti. Quindi mi sono [&#8230;]</p>
<p>L'articolo <a href="https://www.minimamente.com/convertire-shortcode-prodotti-di-woocommerce-in-un-carousel-in-blocksy/">Convertire shortcode prodotti di WooCommerce in un carousel in Blocksy</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ultimamente sto lavorando con <a href="https://r.freemius.com/5115/8132061/https://creativethemes.com/blocksy/" target="_blank" rel="noreferrer noopener sponsored nofollow"><strong>Blocksy</strong></a>, un tema con il quale mi trovo bene e lo ritengo uno dei migliori al momento. Mi ritrovo però a dover lavorare anche con degli e-commerce fatti con <strong>WooCommerce</strong> e a quanto pare <strong>non esiste un blocco per gutenberg</strong> fatto bene che mostri un <strong>carousel di prodotti.</strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="413" src="https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.29.10-1024x413.png" alt="" class="wp-image-5577" srcset="https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.29.10-1024x413.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.29.10-300x121.png 300w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.29.10-768x310.png 768w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.29.10-1536x619.png 1536w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.29.10-2048x826.png 2048w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.29.10-600x242.png 600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Quindi mi sono detto, e se adattassi il codice <strong>output HTML di WooCommerce</strong> e lo facessi diventare un <strong>carousel</strong>?</p>



<p><strong>Risulato</strong> che è stato possibile e quindi condivido con voi i passaggi. <em>Se sei un DEV ci riesci in un attimo.</em></p>



<p>Questo è lo shortcode di default di WooCommece nel caso la guida la trovi qui: <a href="https://woocommerce.com/document/woocommerce-shortcodes/products/" target="_blank" rel="noreferrer noopener">https://woocommerce.com/document/woocommerce-shortcodes/products/</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="262" src="https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.40.41-1024x262.png" alt="" class="wp-image-5580" srcset="https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.40.41-1024x262.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.40.41-300x77.png 300w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.40.41-768x196.png 768w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.40.41-1536x393.png 1536w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.40.41-600x153.png 600w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.40.41.png 1792w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Devi solo fare attenzione a mettere sempre la classe &#8220;mm-product-carousel&#8221; quando vuoi far diventare i prodotti un carousel.</strong></p>



<p>La prima cosa da fare è <strong>integrare questo codice in un file .php</strong>, io lavorando con un <strong>plugin</strong> ho messo le <code>path</code> corrette per richiamare i files, ma tu nel caso sia dentro un <strong>tema child</strong> dovrai solo andare a cambiare quelle. Quindi fai attenzione solo li!</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;PHP&quot;,&quot;language&quot;:&quot;PHP&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;php&quot;}">&lt;?php
/**
 * File: carousels.php
 * Description: Integra Swiper.js per trasformare le liste prodotti WooCommerce in carousel
 */

// Evita l'accesso diretto al file
if (!defined('ABSPATH')) {
    exit;
}

/**
 * Classe per gestire l'integrazione del carousel Swiper con WooCommerce
 */
class WC_Swiper_Carousel {
    
    /**
     * Costruttore della classe
     */
    public function __construct() {
        // Carica gli script e gli stili necessari
        add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'));
        
        // Aggiungi lo script di inizializzazione nel footer
        add_action('wp_footer', array($this, 'add_inline_script'));
    }
    
    /**
     * Carica gli script e i fogli di stile necessari
     */
    public function enqueue_scripts() {
        // Registra e carica gli stili di Swiper
        wp_register_style(
            'mm-swiper-styles', 
            plugin_dir_url(dirname( __FILE__ )) . 'css/swiper-bundle.min.css',
            array(),
            '11.2.6'
        );
        wp_enqueue_style('mm-swiper-styles');
        
        // Registra e carica il CSS personalizzato
        wp_register_style(
            'wc-swiper-carousel', 
            plugin_dir_url(dirname( __FILE__ )) . 'css/carousel.css',
            array('mm-swiper-styles'),
            '1.0.0'
        );
        wp_enqueue_style('wc-swiper-carousel');
        
        // Registra e carica lo script di Swiper
        wp_register_script(
            'mm-swiper-js',
            plugin_dir_url(dirname( __FILE__ )) . 'js/swiper-bundle.min.js',
            array('jquery'),
            '11.2.6',
            true
        );
        wp_enqueue_script('mm-swiper-js');
    }
    
    /**
     * Aggiunge lo script inline per l'inizializzazione di Swiper nel footer
     */
    public function add_inline_script() {
        ?&gt;
        &lt;script type=&quot;text/javascript&quot;&gt;
        (function($) {
            $(document).ready(function() {
                // Trova tutti i contenitori woocommerce con liste di prodotti
                $('.woocommerce.mm-product-carousel ul.products').each(function(index) {
                    const $productList = $(this);
                    const $wooContainer = $productList.closest('.woocommerce');
                    
                    // Se ci sono almeno 3 prodotti, trasforma in carousel
                    if ($productList.find('li.product').length &gt;= 3) {
                        // Genera un ID unico per questo carousel
                        const carouselId = 'wc-swiper-' + index;
                        
                        // Avvolgi il contenitore in un div swiper
                        $productList.wrap('&lt;div id=&quot;' + carouselId + '&quot; class=&quot;swiper&quot;&gt;&lt;/div&gt;');
                        
                        // Aggiungi la classe swiper-wrapper alla lista di prodotti
                        $productList.addClass('swiper-wrapper');
                        
                        // Aggiungi la classe swiper-slide a ogni prodotto
                        $productList.find('li.product').addClass('swiper-slide');
                        
                        // Aggiungi i controlli di navigazione
                        const $swiperContainer = $('#' + carouselId);
                        $swiperContainer.append('&lt;div class=&quot;swiper-pagination&quot;&gt;&lt;/div&gt;');
                        $swiperContainer.append('&lt;div class=&quot;swiper-button-prev&quot;&gt;&lt;/div&gt;');
                        $swiperContainer.append('&lt;div class=&quot;swiper-button-next&quot;&gt;&lt;/div&gt;');
                        
                        // Rimuovi le classi columns-* che potrebbero interferire
                        $productList.removeClass(function(index, className) {
                            return (className.match(/(^|\s)columns-\S+/g) || []).join(' ');
                        });
                        
                        // Inizializza Swiper con un piccolo ritardo per assicurarsi che il DOM sia pronto
                        setTimeout(function() {
                            const swiper = new Swiper('#' + carouselId, {
                                slidesPerView: 2,
                                spaceBetween: 30,
                                loop: true,
                                watchOverflow: true,
                                roundLengths: true,
                                autoplay: {
                                    delay: 9000,
                                    disableOnInteraction: true,
                                },
                                navigation: {
                                    nextEl: '#' + carouselId + ' .swiper-button-next',
                                    prevEl: '#' + carouselId + ' .swiper-button-prev',
                                },
                                breakpoints: {
                                    // quando la larghezza è &gt;= 320px
                                    320: {
                                        slidesPerView: 2,
                                        spaceBetween: 10,
                                    },
                                    // quando la larghezza è &gt;= 480px
                                    480: {
                                        slidesPerView: 2,
                                        spaceBetween: 20,
                                    },
                                    // quando la larghezza è &gt;= 768px
                                    768: {
                                        slidesPerView: 3,
                                        spaceBetween: 30,
                                    },
                                    // quando la larghezza è &gt;= 992px
                                    992: {
                                        slidesPerView: 4,
                                        spaceBetween: 30,
                                    }
                                },
                                on: {
                                    init: function() {
                                        // Rendi visibili gli slide dopo l'inizializzazione
                                        $(this.slides).css('visibility', 'visible');
                                        
                                        // Aggiorna il layout
                                        this.update();
                                    }
                                }
                            });
                            
                            // Aggiungi l'evento resize per aggiornare lo swiper
                            $(window).on('resize', function() {
                                swiper.update();
                            });
                        }, 200); // Aumentato a 200ms per dare più tempo al DOM
                    }
                });
            });
        })(jQuery);
        &lt;/script&gt;
        &lt;?php
    }
}

// Inizializza la classe
$wc_swiper_carousel = new WC_Swiper_Carousel();</pre></div>



<p>Fatto questo ho messo a parte il codice <strong>CSS</strong>, ma io uso un <strong>compilatore su VScode </strong>quindi ti darò il mio <strong>SCSS</strong> che ho usato dentro il file chiamato <code>carousel.scss</code> (output in carousel.css)</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;css&quot;,&quot;mime&quot;:&quot;text/x-scss&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;SCSS&quot;,&quot;language&quot;:&quot;SCSS&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;scss&quot;}">.woocommerce {
	.swiper {
		width: 100%;
		position: relative;
		overflow: hidden;
		padding: 0;
		margin-bottom: 40px;
	}

	.swiper-wrapper {
		display: flex;
		transition-duration: 0ms;
		transform: translate3d(0px, 0px, 0px);
		flex-wrap: nowrap !important;
	}

	[data-products] {
		&amp;.swiper-wrapper {
			display: flex !important; // Forza flex su Swiper
			grid-template-columns: none !important; // Rimuovi grid columns
			grid-column-gap: 0 !important; // Rimuovi gap di grid
			grid-row-gap: 0 !important; 
			gap: 0 !important; // Rimuovi qualsiasi gap
		}
	}

	.swiper-slide {
		flex-shrink: 0;
		width: auto;
		height: auto;
		position: relative;
		transition-property: transform;
	}

	.swiper-button {

		&amp;-next,
		&amp;-prev {
			position: absolute;
			top: 50%;
			width: 40px;
			height: 40px;
			margin-top: -20px;
			z-index: 10;
			cursor: pointer;
			display: flex;
			align-items: center;
			justify-content: center;
			color: #333;
			background-color: rgba(255, 255, 255, 0.8);
			border-radius: 50%;
			box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);

			&amp;:hover {
				background-color: #fff;
				box-shadow: 0 3px 8px rgba(0, 0, 0, 0.2);
			}

			&amp;:after {
				font-size: 18px;
				font-weight: bold;
			}
		}

		&amp;-prev {
			left: 10px;
			right: auto;
		}

		&amp;-next {
			right: 10px;
			left: auto;
		}
	}

	.swiper-pagination {
		position: absolute;
		text-align: center;
		transition: 300ms opacity;
		transform: translate3d(0, 0, 0);
		z-index: 10;
		bottom: 0;
		left: 0;
		width: 100%;

		&amp;-bullet {
			width: 10px;
			height: 10px;
			display: inline-block;
			border-radius: 50%;
			background: #ccc;
			margin: 0 4px;
			opacity: 0.7;
			cursor: pointer;

			&amp;-active {
				opacity: 1;
				background: #333;
			}
		}
	}
}</pre></div>



<p>Il <strong>risultato</strong> è questo e puoi modificare i paramentri nel codice come meglio credi!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="456" src="https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.30.16-1024x456.png" alt="" class="wp-image-5578" srcset="https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.30.16-1024x456.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.30.16-300x133.png 300w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.30.16-768x342.png 768w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.30.16-1536x684.png 1536w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.30.16-2048x911.png 2048w, https://www.minimamente.com/wp-content/uploads/2025/05/Screenshot-2025-05-18-alle-09.30.16-600x267.png 600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
<p>L'articolo <a href="https://www.minimamente.com/convertire-shortcode-prodotti-di-woocommerce-in-un-carousel-in-blocksy/">Convertire shortcode prodotti di WooCommerce in un carousel in Blocksy</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.minimamente.com/convertire-shortcode-prodotti-di-woocommerce-in-un-carousel-in-blocksy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Inviare una richiesta di recensione al cliente in automatico su Trustpilot per i prodotti di WooCommerce</title>
		<link>https://www.minimamente.com/inviare-una-richiesta-di-recensione-al-cliente-in-automatico-su-trustpilot-per-i-prodotti-di-woocommerce/</link>
					<comments>https://www.minimamente.com/inviare-una-richiesta-di-recensione-al-cliente-in-automatico-su-trustpilot-per-i-prodotti-di-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[miniMAC]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 16:00:34 +0000</pubDate>
				<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://www.minimamente.com/?p=5049</guid>

					<description><![CDATA[<p>Qui ho sviluppato un codice che permette di avere un sistema per inviare in automatico le recensioni su Trustpilot. Il plugin di Trustpilot per WordPress e WooCommerce non viene aggiornato da anni e da sempre problemi, quindi ho pensato che potesse esservi di aiuto questo codice, testato, che serve per inviare le richieste di recensioni. [&#8230;]</p>
<p>L'articolo <a href="https://www.minimamente.com/inviare-una-richiesta-di-recensione-al-cliente-in-automatico-su-trustpilot-per-i-prodotti-di-woocommerce/">Inviare una richiesta di recensione al cliente in automatico su Trustpilot per i prodotti di WooCommerce</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Qui ho sviluppato un codice che permette di avere un <strong>sistema per inviare in automatico le recensioni su Trustpilot</strong>.</p>



<p>Il <strong>plugin di Trustpilot per WordPress e WooCommerce</strong> non viene aggiornato da anni e da sempre problemi, quindi ho pensato che potesse esservi di aiuto questo codice, testato, che serve per inviare le richieste di recensioni.</p>



<p>Lo script scatta quando un ordine è stato creato e si attiva nella pagina di ringraziamento che vede il cliente, ovvero <code>/order-received/</code></p>



<p>La prima cosa da fare è andare sul sito di trustpilot e prendere il primo codice da inserire con la key giusta.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69c540aee2e0a&quot;}" data-wp-interactive="core/image" data-wp-key="69c540aee2e0a" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="411" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.minimamente.com/wp-content/uploads/2025/02/Screenshot-2025-02-07-alle-16.38.54-1024x411.png" alt="" class="wp-image-5050" srcset="https://www.minimamente.com/wp-content/uploads/2025/02/Screenshot-2025-02-07-alle-16.38.54-1024x411.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/02/Screenshot-2025-02-07-alle-16.38.54-600x241.png 600w, https://www.minimamente.com/wp-content/uploads/2025/02/Screenshot-2025-02-07-alle-16.38.54-300x121.png 300w, https://www.minimamente.com/wp-content/uploads/2025/02/Screenshot-2025-02-07-alle-16.38.54-768x309.png 768w, https://www.minimamente.com/wp-content/uploads/2025/02/Screenshot-2025-02-07-alle-16.38.54-1536x617.png 1536w, https://www.minimamente.com/wp-content/uploads/2025/02/Screenshot-2025-02-07-alle-16.38.54-2048x823.png 2048w, https://www.minimamente.com/wp-content/uploads/2025/02/Screenshot-2025-02-07-alle-16.38.54-1200x482.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Ingrandisci"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p>Ho incluso già io il codice per la header, ma voi <strong>dovete solo mettere la KEY giusta</strong>, nella funzione <code>mm_add_trustpilot_script_head</code></p>



<p>Questo file va inserito nel vostro tema o plugin <strong>e va richiamato dal vostro file functions.php</strong></p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;PHP&quot;,&quot;language&quot;:&quot;PHP&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;php&quot;}">&lt;?php
/**
 * @package mm
 */

// Se questo file viene chiamato direttamente, abortire.
if ( ! defined( 'WPINC' ) ) {
    die;
}

function mm_add_trustpilot_script_head() {
    if (is_wc_endpoint_url('order-received')) {
        ?&gt;
        &lt;script&gt;
            (function(w,d,s,r,n){w.TrustpilotObject=n;w[n]=w[n]||function(){(w[n].q=w[n].q||[]).push(arguments)};
                a=d.createElement(s);a.async=1;a.src=r;a.type='text/java'+s;f=d.getElementsByTagName(s)[0];
                f.parentNode.insertBefore(a,f)})(window,document,'script', 'https://invitejs.trustpilot.com/tp.min.js', 'tp');
                tp('register', 'LA_TUA_KEY_QUI');
        &lt;/script&gt;
        &lt;?php
    }
}
add_action('wp_head', 'mm_add_trustpilot_script_head', 99);


function mm_add_trustpilot_invitation_script() {
    if (!is_wc_endpoint_url('order-received')) {
        return;
    }

    if (!isset($_GET['key'])) {
        return;
    }

    $order_id = wc_get_order_id_by_order_key(sanitize_text_field($_GET['key']));
    $order = wc_get_order($order_id);

    if (!$order) {
        return;
    }

    $customer_email = $order-&gt;get_billing_email();
    $customer_name = $order-&gt;get_billing_first_name();
    $reference_id = $order-&gt;get_order_number();
    
    $products_data = [];
    $product_skus = [];

    foreach ($order-&gt;get_items() as $item) {
        $product = $item-&gt;get_product();
        if (!$product) {
            continue;
        }

        $sku = $product-&gt;get_sku();
        $product_skus[] = $sku;
        
        $products_data[] = [
            &quot;sku&quot; =&gt; $sku,
            &quot;productUrl&quot; =&gt; get_permalink($product-&gt;get_id()),
            &quot;imageUrl&quot; =&gt; wp_get_attachment_url($product-&gt;get_image_id()),
            &quot;name&quot; =&gt; $product-&gt;get_name()
        ];
    }

    ?&gt;
    &lt;script&gt;
        function sendTpInvitation() {
            var trustpilot_invitation = {
                recipientEmail: &quot;&lt;?php echo esc_js($customer_email); ?&gt;&quot;,
                recipientName: &quot;&lt;?php echo esc_js($customer_name); ?&gt;&quot;,
                referenceId: &quot;&lt;?php echo esc_js($reference_id); ?&gt;&quot;,
                source: &quot;InvitationScript&quot;,
                productSkus: &lt;?php echo json_encode($product_skus); ?&gt;,
                products: &lt;?php echo json_encode($products_data); ?&gt;
            };

            tp(&quot;createInvitation&quot;, trustpilot_invitation);
        }

        if (typeof tp !== &quot;undefined&quot;) {
            sendTpInvitation();
        } else {
            document.addEventListener(&quot;DOMContentLoaded&quot;, function () {
                sendTpInvitation();
            });
        }
    &lt;/script&gt;
    &lt;?php
}
add_action('wp_footer', 'mm_add_trustpilot_invitation_script');
</pre></div>
<p>L'articolo <a href="https://www.minimamente.com/inviare-una-richiesta-di-recensione-al-cliente-in-automatico-su-trustpilot-per-i-prodotti-di-woocommerce/">Inviare una richiesta di recensione al cliente in automatico su Trustpilot per i prodotti di WooCommerce</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.minimamente.com/inviare-una-richiesta-di-recensione-al-cliente-in-automatico-su-trustpilot-per-i-prodotti-di-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come scoprire quali blocchi vengono utilizzati in WordPress e WooCommerce</title>
		<link>https://www.minimamente.com/come-scoprire-quali-blocchi-vengono-utilizzati-in-wordpress-e-woocommerce/</link>
					<comments>https://www.minimamente.com/come-scoprire-quali-blocchi-vengono-utilizzati-in-wordpress-e-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[miniMAC]]></dc:creator>
		<pubDate>Tue, 28 Jan 2025 11:46:20 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://www.minimamente.com/?p=5040</guid>

					<description><![CDATA[<p>Codice pronto all&#8217;uso per noi DEV che vogliamo sapere quali blocchi vengono chiamati nella pagina di WordPress o di WooCommerce. Oppure ancora meglio con:</p>
<p>L'articolo <a href="https://www.minimamente.com/come-scoprire-quali-blocchi-vengono-utilizzati-in-wordpress-e-woocommerce/">Come scoprire quali blocchi vengono utilizzati in WordPress e WooCommerce</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Codice pronto all&#8217;uso per noi DEV che vogliamo sapere quali blocchi vengono chiamati nella pagina di WordPress o di WooCommerce.</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;PHP&quot;,&quot;language&quot;:&quot;PHP&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;php&quot;}">add_filter( 'render_block', function( $block_content, $block ) {

    echo '&lt;pre&gt;';
    var_dump($block);
    echo '&lt;/pre&gt;';

}, 10, 2 );</pre></div>



<p>Oppure ancora meglio con:</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;PHP&quot;,&quot;language&quot;:&quot;PHP&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;php&quot;}">function mm_show_blocks_in_frontend() {
    if (!is_admin()) {
        global $post;
        if ($post) {
            $blocks = parse_blocks($post-&gt;post_content);
            if (!empty($blocks)) {
                echo '&lt;div style=&quot;position:fixed; top:10px; right:10px; background:#fff; padding:10px; border:1px solid #ccc; z-index:9999;&quot;&gt;';
                echo '&lt;strong&gt;Blocchi nella pagina:&lt;/strong&gt;&lt;ul&gt;';
                foreach ($blocks as $block) {
                    if (!empty($block['blockName'])) {
                        echo '&lt;li&gt;' . esc_html($block['blockName']) . '&lt;/li&gt;';
                    }
                }
                echo '&lt;/ul&gt;&lt;/div&gt;';
            }
        }
    }
}
add_action('wp_footer', 'mm_show_blocks_in_frontend');
</pre></div>
<p>L'articolo <a href="https://www.minimamente.com/come-scoprire-quali-blocchi-vengono-utilizzati-in-wordpress-e-woocommerce/">Come scoprire quali blocchi vengono utilizzati in WordPress e WooCommerce</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.minimamente.com/come-scoprire-quali-blocchi-vengono-utilizzati-in-wordpress-e-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come funziona un cron a step in WordPress</title>
		<link>https://www.minimamente.com/come-funziona-un-cron-a-step-in-wordpress/</link>
					<comments>https://www.minimamente.com/come-funziona-un-cron-a-step-in-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[miniMAC]]></dc:creator>
		<pubDate>Mon, 20 Jan 2025 15:00:13 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://www.minimamente.com/?p=5036</guid>

					<description><![CDATA[<p>Ogni tanto mi capita di dover lavorare con una grande quantità di dati, con molti ordini o molti prodotti o anche custom post type. E quindi cè un problema. Avendo molti oggetti da gestire può capitare di voler andare ad aggiornare dei parametri per ogni singolo post. Ma se ne abbiamo 50.000 di post farlo [&#8230;]</p>
<p>L'articolo <a href="https://www.minimamente.com/come-funziona-un-cron-a-step-in-wordpress/">Come funziona un cron a step in WordPress</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ogni tanto mi capita di dover lavorare con una grande quantità di dati, con molti ordini o molti prodotti o anche custom post type. E quindi cè un problema.</p>



<p>Avendo molti oggetti da gestire può capitare di voler andare ad aggiornare dei parametri per ogni singolo post. Ma se ne abbiamo 50.000 di post farlo a mano è quasi impossibile.</p>



<p>Per questo vediamo come fare per aggiornare prodotti o per esempio ordini usando WP e le sue funzioni di cronjob.</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;PHP&quot;,&quot;language&quot;:&quot;PHP&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;php&quot;}">function aggiorna_prossimo_batch_cpt() {
    $offset = get_option('cpt_aggiornati_offset', 0); // Ottieni l'offset corrente
    $limit = 10; // Numero di cpt da aggiornare per ogni batch

    // Ottieni un blocco di 10 cpt
    $args = array(
        'status' =&gt; 'any', // Puoi specificare lo status se necessario
        'limit' =&gt; $limit,
        'offset' =&gt; $offset,
        'orderby' =&gt; 'date',
        'order' =&gt; 'ASC',
      	'post_type' =&gt; 'tuo_post_type'
    );

    $custom_cpt = get_posts($args);

    if (empty($custom_cpt)) {
        // Se non ci sono più cpt, resetta l'offset e interrompi il cron job
        delete_option('cpt_aggiornati_offset');
      	// Facoltativo invia una email a fine ciclo
      	//wp_mail('tua@email.com','WP Ciclo', 'Ciclo finito!'); 
        wp_clear_scheduled_hook('aggiorna_cpt_batch_cron');
        return;
    }

    foreach ($custom_cpt as $cpt) {
        $post_id = $cpt-&gt;get_id();
        // QUI FUNZIONE custom che andrà a svolgere tutto il lavoro
    }

    // Incrementa l'offset per il prossimo batch
    $offset += $limit;
    update_option('cpt_aggiornati_offset', $offset); // Salva il nuovo offset
}

// Registra il cron job personalizzato (thirty_seconds = ogni 30 secondi)
function registra_cron_job_aggiornamento_cpt() {
    if (!wp_next_scheduled('aggiorna_cpt_batch_cron')) {
        wp_schedule_event(time(), 'thirty_seconds', 'aggiorna_cpt_batch_cron');
    }
}
add_action('wp', 'registra_cron_job_aggiornamento_cpt');

// Aggiungi l'azione per eseguire il batch di aggiornamento
add_action('aggiorna_cpt_batch_cron', 'aggiorna_prossimo_batch_cpt');

// Intervallo di 30 secondi per il cron job
add_filter('cron_schedules', function($schedules) {
    $schedules['thirty_seconds'] = array(
        'interval' =&gt; 30,
        'display'  =&gt; __('Ogni 30 secondi')
    );
    return $schedules;
});
</pre></div>



<p>Sopra è tutto il meccanismo che serve per modificare ogni 30 secondi 10 custom post type o tutto quello che volete senza stressare il server.</p>
<p>L'articolo <a href="https://www.minimamente.com/come-funziona-un-cron-a-step-in-wordpress/">Come funziona un cron a step in WordPress</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.minimamente.com/come-funziona-un-cron-a-step-in-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Inviare un buono sconto ad un cliente dopo l&#8217;acquisto in base ad un importo speso ed al metodo di pagamento scelto</title>
		<link>https://www.minimamente.com/inviare-un-buono-sconto-ad-un-cliente-dopo-lacquisto-in-base-ad-un-importo-speso-ed-al-metodo-di-pagamento-scelto/</link>
					<comments>https://www.minimamente.com/inviare-un-buono-sconto-ad-un-cliente-dopo-lacquisto-in-base-ad-un-importo-speso-ed-al-metodo-di-pagamento-scelto/#respond</comments>
		
		<dc:creator><![CDATA[miniMAC]]></dc:creator>
		<pubDate>Sat, 18 Jan 2025 19:44:47 +0000</pubDate>
				<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://www.minimamente.com/?p=5029</guid>

					<description><![CDATA[<p>Oggi vediamo un codice che ci aiuta a dare uno sconto al cliente che effettua un ordine sul sito web e che rispetta certe caratteristiche, in questo caso le seguenti: Il cliente riceve nella mail lo sconto di un 8% da usare quando vuole, oppure nel codice ho inserirto e commentato ache un limite di [&#8230;]</p>
<p>L'articolo <a href="https://www.minimamente.com/inviare-un-buono-sconto-ad-un-cliente-dopo-lacquisto-in-base-ad-un-importo-speso-ed-al-metodo-di-pagamento-scelto/">Inviare un buono sconto ad un cliente dopo l&#8217;acquisto in base ad un importo speso ed al metodo di pagamento scelto</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Oggi vediamo un codice che ci aiuta a dare uno sconto al cliente che effettua un ordine sul sito web e che rispetta certe caratteristiche, in questo caso le seguenti:</p>



<ul class="wp-block-list">
<li>il cliente deve spendere almeno 250 €</li>



<li>il cliente deve pagare con bonifico bancario oppure con ritiro in sede</li>
</ul>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;PHP&quot;,&quot;language&quot;:&quot;PHP&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;php&quot;}">// Soglia minima per la creazione del coupon
define('IMPORTO_MINIMO_ORDINE_COUPON',250);

// ogni volta che un ordine completato soddisfa i criteri, il cliente riceverà un'email con il coupon di sconto
add_action('woocommerce_order_status_completed', 'invia_coupon_sconto', 10, 1);
add_action('woocommerce_email_before_order_table', 'aggiungi_coupon_alla_mail', 10, 4);

function invia_coupon_sconto($order_id) {
    $order = wc_get_order($order_id);

    if (!$order || $order-&gt;get_meta('generated_coupon_code')) {
        return;
    }

    // Ottieni il totale e il metodo di pagamento
    $order_total = $order-&gt;get_total();
    $payment_method = $order-&gt;get_payment_method();

    if ($order_total &gt; IMPORTO_MINIMO_ORDINE_COUPON &amp;&amp; in_array($payment_method, ['bacs', 'local_pickup'])) {
        // Genera e salva il coupon
        genera_coupon_per_ordine($order);
    }
}

function aggiungi_coupon_alla_mail($order, $sent_to_admin, $plain_text, $email) {
    if ($email-&gt;id == 'customer_completed_order') {
        // Verifica il totale dell'ordine
        $order_total = $order-&gt;get_total();
        
        // Se il totale non supera la soglia, non mostrare il coupon
        if ($order_total &lt;= IMPORTO_MINIMO_ORDINE_COUPON) {
            return;
        }

        if ( ! empty($coupon_code)) {
            echo '&lt;div style=&quot;width: 80%; margin: 16px auto; padding: 16px 5%; text-align: center; border-width: 6px; border-style: dashed; border-color: #999;&quot;&gt;';
            echo '&lt;h4 style=&quot;font-size: 16px;&quot;&gt;Il tuo Coupon Pick &amp; Pay&lt;/h4&gt;';
            echo '&lt;h2 style=&quot;text-transform: uppercase; font-size: 32px; text-align: center;&quot;&gt;' . esc_html($coupon_code) . '&lt;/h2&gt;';
            echo '&lt;p&gt;Utilizza questo coupon per ottenere uno sconto di un 8% sul tuo prossimo ordine. Questo coupon è utilizzabile una sola volta.&lt;/p&gt;';
            echo '&lt;/div&gt;';
        }
    }
}

function genera_coupon_per_ordine($order) {
    // Genera un codice coupon unico
    $coupon_code = 'sconto8_' . uniqid();

    // Crea il coupon
    $coupon = new WC_Coupon();
    $coupon-&gt;set_code($coupon_code);
    $coupon-&gt;set_discount_type('percent'); // Tipo di sconto percentuale
    $coupon-&gt;set_amount(8); // Sconto 8%
    $coupon-&gt;set_individual_use(true); // Utilizzabile solo una volta
    $coupon-&gt;set_usage_limit(1); // Limitato a un uso
    $coupon-&gt;save();

    // Salva il codice coupon come meta nell'ordine
    $order-&gt;update_meta_data('generated_coupon_code', $coupon_code);
    $order-&gt;save();

    return $coupon_code;
}
</pre></div>



<p>Il cliente riceve nella mail lo sconto di un 8% da usare quando vuole, oppure nel codice ho inserirto e commentato ache un limite di tempo. </p>



<p>Impostato il coupon per essere usato solo 1 volta. In questo caso il coupon viene inserito nel sistema ed è realizzato in modo da essere univoco per ogni cliente.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="570" src="https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.44.20-1024x570.png" alt="" class="wp-image-5031" srcset="https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.44.20-1024x570.png 1024w, https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.44.20-600x334.png 600w, https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.44.20-300x167.png 300w, https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.44.20-768x428.png 768w, https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.44.20-1200x668.png 1200w, https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.44.20.png 1232w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Questo è quello che riceverà il cliente.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="926" height="1024" src="https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.40.24-926x1024.png" alt="" class="wp-image-5030" srcset="https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.40.24-926x1024.png 926w, https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.40.24-600x664.png 600w, https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.40.24-271x300.png 271w, https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.40.24-768x850.png 768w, https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.40.24-1200x1328.png 1200w, https://www.minimamente.com/wp-content/uploads/2025/01/Screenshot-2025-01-18-alle-20.40.24.png 1336w" sizes="auto, (max-width: 926px) 100vw, 926px" /></figure>
<p>L'articolo <a href="https://www.minimamente.com/inviare-un-buono-sconto-ad-un-cliente-dopo-lacquisto-in-base-ad-un-importo-speso-ed-al-metodo-di-pagamento-scelto/">Inviare un buono sconto ad un cliente dopo l&#8217;acquisto in base ad un importo speso ed al metodo di pagamento scelto</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.minimamente.com/inviare-un-buono-sconto-ad-un-cliente-dopo-lacquisto-in-base-ad-un-importo-speso-ed-al-metodo-di-pagamento-scelto/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come sapere quali sono slug e tipo di pagamenti accettati in una installazione di WooCommerce</title>
		<link>https://www.minimamente.com/come-sapere-quali-sono-slug-e-tipo-di-pagamenti-accettati-in-una-installazione-di-woocommerce/</link>
					<comments>https://www.minimamente.com/come-sapere-quali-sono-slug-e-tipo-di-pagamenti-accettati-in-una-installazione-di-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[miniMAC]]></dc:creator>
		<pubDate>Sat, 18 Jan 2025 17:02:41 +0000</pubDate>
				<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://www.minimamente.com/?p=5027</guid>

					<description><![CDATA[<p>Funzione per DEV utile per sapere, tramite end-point quali sono i metodi di pagamento disponibili in WooCommerce. Verrà restituita una lista con gli slug, utili in caso di debug. Una volta inserito il codice, basterà andare alla url di end-point: https://tuosito.com/test-payment-methods/</p>
<p>L'articolo <a href="https://www.minimamente.com/come-sapere-quali-sono-slug-e-tipo-di-pagamenti-accettati-in-una-installazione-di-woocommerce/">Come sapere quali sono slug e tipo di pagamenti accettati in una installazione di WooCommerce</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Funzione per <strong>DEV</strong> utile per sapere, tramite end-point quali sono i metodi di pagamento disponibili in WooCommerce. Verrà restituita una lista con gli slug, utili in caso di debug.</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;PHP&quot;,&quot;language&quot;:&quot;PHP&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;php&quot;}">add_action('init', function() {
    add_rewrite_rule('test-payment-methods/?$', 'index.php?test_payment_methods=1', 'top');
});

add_filter('query_vars', function($query_vars) {
    $query_vars[] = 'test_payment_methods';
    return $query_vars;
});

add_action('template_redirect', function() {
    if (get_query_var('test_payment_methods') == 1) {
        header('Content-Type: text/html');

        // Ottieni i gateway di pagamento disponibili
        $available_gateways = WC()-&gt;payment_gateways-&gt;get_available_payment_gateways();

        if (empty($available_gateways)) {
            echo '&lt;p&gt;Nessun metodo di pagamento disponibile.&lt;/p&gt;';
            exit;
        }

        echo '&lt;ul style=&quot;list-style: disc; padding-left: 20px;&quot;&gt;';
        foreach ($available_gateways as $gateway_id =&gt; $gateway) {
            echo '&lt;li&gt;&lt;strong&gt;Slug:&lt;/strong&gt; ' . esc_html($gateway_id) . ' - &lt;strong&gt;Nome:&lt;/strong&gt; ' . esc_html($gateway-&gt;get_title()) . '&lt;/li&gt;';
        }
        echo '&lt;/ul&gt;';
        exit;
    }
});</pre></div>



<p>Una volta inserito il codice, basterà andare alla url di end-point: https://tuosito.com/test-payment-methods/</p>
<p>L'articolo <a href="https://www.minimamente.com/come-sapere-quali-sono-slug-e-tipo-di-pagamenti-accettati-in-una-installazione-di-woocommerce/">Come sapere quali sono slug e tipo di pagamenti accettati in una installazione di WooCommerce</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.minimamente.com/come-sapere-quali-sono-slug-e-tipo-di-pagamenti-accettati-in-una-installazione-di-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Maggiorazione di prezzo per le variazioni di un prodotto variabile in modo veloce (senza farle a mano)</title>
		<link>https://www.minimamente.com/maggiorazione-di-prezzo-per-le-variazioni-di-un-prodotto-variabile-in-modo-veloce-senza-farle-a-mano/</link>
					<comments>https://www.minimamente.com/maggiorazione-di-prezzo-per-le-variazioni-di-un-prodotto-variabile-in-modo-veloce-senza-farle-a-mano/#respond</comments>
		
		<dc:creator><![CDATA[miniMAC]]></dc:creator>
		<pubDate>Sun, 13 Oct 2024 11:28:51 +0000</pubDate>
				<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://www.minimamente.com/?p=5009</guid>

					<description><![CDATA[<p>Come posso configurare un prodotto che ha tante opzioni in WooCommerce e devo appunto stabilire una maggiorazione di prezzo solo se contiene certe variazioni andando a modificare il prezzo di partenza? Molto semplice: con questo plugin che ho realizzato e che lo condivido con voi. Per esempio questo articolo di questo e-commerce ha parecchie opzioni [&#8230;]</p>
<p>L'articolo <a href="https://www.minimamente.com/maggiorazione-di-prezzo-per-le-variazioni-di-un-prodotto-variabile-in-modo-veloce-senza-farle-a-mano/">Maggiorazione di prezzo per le variazioni di un prodotto variabile in modo veloce (senza farle a mano)</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Come posso configurare un prodotto che ha tante opzioni in <strong>WooCommerce</strong> e devo appunto stabilire una <strong>maggiorazione di prezzo solo se contiene certe variazioni</strong> andando a modificare il prezzo di partenza?</p>



<p>Molto semplice: con <strong><a href="https://mega.nz/file/cwAmAKoT#wNexii_8guX-QomJZHAU7k-kaNbBfnPAkB9F_x6OztQ">questo plugin</a></strong> che ho realizzato e che lo condivido con voi.</p>



<p>Per esempio questo articolo di questo e-commerce ha parecchie opzioni</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69c540aee6a66&quot;}" data-wp-interactive="core/image" data-wp-key="69c540aee6a66" class="wp-block-image size-large is-style-default wp-lightbox-container"><img loading="lazy" decoding="async" width="668" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.30.58-668x1024.png" alt="" class="wp-image-5010" style="aspect-ratio:4/3;object-fit:cover" srcset="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.30.58-668x1024.png 668w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.30.58-600x920.png 600w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.30.58-196x300.png 196w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.30.58-768x1178.png 768w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.30.58-1001x1536.png 1001w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.30.58-1335x2048.png 1335w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.30.58-1200x1841.png 1200w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.30.58.png 1386w" sizes="auto, (max-width: 668px) 100vw, 668px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Ingrandisci"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p>Alcune variazioni da dover settare, <strong>perché è stato usato il plugin &#8220;WooCommerce Dynamic Pricing&#8221;</strong> che rende facile il lavoro di inserimento delle maggiorazioni per il negoziante. </p>



<p>Ma abbiamo <strong>4 svantaggi</strong> usando <strong>WooCommerce Dynamic Pricing</strong>:</p>



<ul class="wp-block-list">
<li>Il primo è che <strong>viene settato il prodotto come articolo semplice</strong> e non vengono create le variazioni vere e proprie native di WooCommerce</li>



<li>Il secondo è che se esporterete i vostri prodotti tramite <strong>CSV di default di WooCommerce</strong> questi prezzi non compariranno e vi lascerà solo il prodotto con il prezzo base</li>



<li>Il terzo è che non viene definito uno <strong>SKU o GTIN corretto per Google shopping</strong>. </li>



<li>Il quarto è che non avete quindi la possibilità di usare le opzioni dei prodotti come <strong>filtri</strong> per il vostro e-commerce.</li>
</ul>



<p>Quindi il procedimento sarà il seguente usando il mio plugin:</p>



<p>Settiamo il prodotto come prodotto variabile e non semplice</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="958" height="310" src="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.39.53.png" alt="" class="wp-image-5012" srcset="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.39.53.png 958w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.39.53-600x194.png 600w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.39.53-300x97.png 300w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.39.53-768x249.png 768w" sizes="auto, (max-width: 958px) 100vw, 958px" /></figure>



<p>Settiamo ora tutti gli attributi e le variazioni che vogliamo usare</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="823" src="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.46.16-1024x823.png" alt="" class="wp-image-5013" style="width:821px;height:auto" srcset="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.46.16-1024x823.png 1024w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.46.16-600x482.png 600w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.46.16-300x241.png 300w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.46.16-768x618.png 768w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.46.16-1536x1235.png 1536w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.46.16-1200x965.png 1200w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.46.16.png 1980w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Ora andiamo a generare tutte le varianti dalle variazioni, in questo caso ne abbiamo generate ben 50</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="419" src="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.47.31-1024x419.png" alt="" class="wp-image-5014" srcset="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.47.31-1024x419.png 1024w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.47.31-600x246.png 600w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.47.31-300x123.png 300w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.47.31-768x314.png 768w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.47.31-1536x629.png 1536w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.47.31-2048x838.png 2048w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.47.31-1200x491.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Ora andiamo a settare il prezzo di base a tutte quante le varianti con la funzione di serie di Woo per la modifica multipla (bulk action) e fatto questo, andiamo alla <strong>TAB Avanzate</strong> dove ci saranno <strong>i campi del mio plugin</strong> che permettono di andare a <strong>modificare i prezzi come aumento solo per ogni singola variazione</strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="605" src="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.57.06-1024x605.png" alt="" class="wp-image-5016" srcset="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.57.06-1024x605.png 1024w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.57.06-600x354.png 600w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.57.06-300x177.png 300w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.57.06-768x454.png 768w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.57.06-1536x907.png 1536w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.57.06-1200x709.png 1200w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.57.06.png 1730w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Ora andano per ordine e solo per le variazioni che hanno un costo aggiuntivo, <strong>andiamo a settare la maggiorazione di prezzo</strong>,non agendo su tutte le variazioni ma appunto solo su quella selezionata.</p>



<p>Quindi seleziona l&#8217;attributo, poi la variazione, metti l&#8217;aumento desiderato (anche 9.90 con decimali oppure 7 per esempio) e clicca su esegui e il <strong>prezzo verrà mdoifcato solo per quella variazione che corrisponde</strong>.  </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="578" src="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.58.14-1024x578.png" alt="" class="wp-image-5017" srcset="https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.58.14-1024x578.png 1024w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.58.14-600x338.png 600w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.58.14-300x169.png 300w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.58.14-768x433.png 768w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.58.14-1536x867.png 1536w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.58.14-1200x677.png 1200w, https://www.minimamente.com/wp-content/uploads/2024/10/Screenshot-2024-10-13-alle-11.58.14.png 1762w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Avrai conferma dell&#8217;avvenuto successo dell&#8217;operazione tramite un alert!</p>



<p><em>Tutto qua! in modo semplice abbiamo sistemato i nostri prodotti.</em></p>



<h2 class="wp-block-heading">Limite numero variazioni Woo</h2>



<p>Forse non lo sapete, ma WooCommerce può generare un massimo di 50 combinazioni di variazioni. Se volete bypassare questo suo limite e dovete generare molte combinazioni, allora nel vostro file functions.php o altro, mettete questo codice</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;PHP&quot;,&quot;language&quot;:&quot;PHP&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;php&quot;}">add_filter('woocommerce_admin_meta_boxes_variations_per_page', 'increase_variations_per_page');

function increase_variations_per_page($limit) {
    return 120; // Modifica questo valore in base alle tue esigenze.
}</pre></div>



<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-a89b3969 wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://mega.nz/file/cwAmAKoT#wNexii_8guX-QomJZHAU7k-kaNbBfnPAkB9F_x6OztQ">Scarica questo plugin Gratuitamente</a></div>
</div>
<p>L'articolo <a href="https://www.minimamente.com/maggiorazione-di-prezzo-per-le-variazioni-di-un-prodotto-variabile-in-modo-veloce-senza-farle-a-mano/">Maggiorazione di prezzo per le variazioni di un prodotto variabile in modo veloce (senza farle a mano)</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.minimamente.com/maggiorazione-di-prezzo-per-le-variazioni-di-un-prodotto-variabile-in-modo-veloce-senza-farle-a-mano/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Supplemento per pagamento alla consegna con il nuovo checkout di Gutenberg</title>
		<link>https://www.minimamente.com/supplemento-per-pagamento-alla-consegna-con-il-nuovo-checkout-di-gutenberg/</link>
					<comments>https://www.minimamente.com/supplemento-per-pagamento-alla-consegna-con-il-nuovo-checkout-di-gutenberg/#respond</comments>
		
		<dc:creator><![CDATA[miniMAC]]></dc:creator>
		<pubDate>Wed, 04 Sep 2024 19:47:31 +0000</pubDate>
				<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://www.minimamente.com/?p=5001</guid>

					<description><![CDATA[<p>Se anche voi volete usare il nuovo checkout di WooCommerce in WordPress e volete aggiungere un supplementoper il pagamento alla consegna, detto anche &#8220;Cash on Delivery&#8221; allor ail codice di oggi è il seguente. Create un file functions.php nel vostro child-theme e isnerite questo codice. Questo codice inserisce un supplemento di € 3.90 ma potete [&#8230;]</p>
<p>L'articolo <a href="https://www.minimamente.com/supplemento-per-pagamento-alla-consegna-con-il-nuovo-checkout-di-gutenberg/">Supplemento per pagamento alla consegna con il nuovo checkout di Gutenberg</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Se anche voi volete usare il nuovo checkout di WooCommerce in WordPress e volete aggiungere un supplementoper il pagamento alla consegna, detto anche &#8220;Cash on Delivery&#8221; allor ail codice di oggi è il seguente.</p>



<p>Create un file functions.php nel vostro child-theme e isnerite questo codice.</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;php&quot;,&quot;mime&quot;:&quot;text/x-php&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;PHP&quot;,&quot;language&quot;:&quot;PHP&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;php&quot;}">add_action( 'woocommerce_cart_calculate_fees', 'aggiungi_o_rimuovi_supplemento_pagamento_alla_consegna', 20, 1 );
function aggiungi_o_rimuovi_supplemento_pagamento_alla_consegna( $cart ) {
    if ( is_admin() &amp;&amp; ! defined( 'DOING_AJAX' ) ) {
        return;
    }

    // Verifica che ci sia un metodo di pagamento selezionato
    if ( isset( WC()-&gt;session-&gt;chosen_payment_method ) ) {
        $metodo_di_pagamento = WC()-&gt;session-&gt;chosen_payment_method;

        // Se il metodo di pagamento è &quot;cod&quot; (Pagamento alla consegna), aggiungi il supplemento
        if ( $metodo_di_pagamento === 'cod' ) {
            $supplemento = 3.90; // Importo del supplemento
            $cart-&gt;add_fee( __( 'Supplemento pagamento alla consegna', 'text-domain' ), $supplemento );
        }
    }
}
// Carica lo script JavaScript per forzare il ricalcolo del carrello al cambio metodo di pagamento
function carica_js_ricalcolo_supplemento() {
    if ( is_checkout() ) {
        wp_enqueue_script( 'ricalcolo-supplemento', get_stylesheet_directory_uri() . '/assets/ricalcolo-supplemento.js', array( 'jquery' ), null, true );
    }
}
add_action( 'wp_enqueue_scripts', 'carica_js_ricalcolo_supplemento' );
</pre></div>



<p>Questo codice inserisce un supplemento di € 3.90 ma potete cambiarlo a vostro piacimento.</p>



<p>Qui invece il codice JS da inserire nel vostro child-theme.</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;javascript&quot;,&quot;mime&quot;:&quot;application/javascript&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;JavaScript&quot;,&quot;language&quot;:&quot;JavaScript&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;js&quot;}">jQuery( function( $ ) {
    // Ascolta il cambiamento del metodo di pagamento
    $( document.body ).on( 'change', 'input[name=&quot;payment_method&quot;]', function() {
        // Forza il ricalcolo del carrello ogni volta che viene cambiato il metodo di pagamento
        $( document.body ).trigger( 'update_checkout' );
    });
});</pre></div>



<p>Tutto qua!</p>
<p>L'articolo <a href="https://www.minimamente.com/supplemento-per-pagamento-alla-consegna-con-il-nuovo-checkout-di-gutenberg/">Supplemento per pagamento alla consegna con il nuovo checkout di Gutenberg</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.minimamente.com/supplemento-per-pagamento-alla-consegna-con-il-nuovo-checkout-di-gutenberg/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come ottimizzare bene WooCommerce e il suo Database</title>
		<link>https://www.minimamente.com/come-ottimizzare-bene-woocommerce-e-il-suo-database/</link>
					<comments>https://www.minimamente.com/come-ottimizzare-bene-woocommerce-e-il-suo-database/#respond</comments>
		
		<dc:creator><![CDATA[miniMAC]]></dc:creator>
		<pubDate>Sun, 25 Aug 2024 15:05:33 +0000</pubDate>
				<category><![CDATA[WooCommerce]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://www.minimamente.com/?p=4987</guid>

					<description><![CDATA[<p>Oggi vediamo i passaggi che ho fatto per ottimizzare un database su Woocommerce e come ho migliorato nettamente le prestazioni del sito fatto con WordPress. Procederemo in ordine con le tabelle più importanti e esose. Il database in questione pesa allo stato attuale 220 MB. wp_woocommerce_order_itemmeta Andiamo nel nostro MySQL e andiamo a selezionare la [&#8230;]</p>
<p>L'articolo <a href="https://www.minimamente.com/come-ottimizzare-bene-woocommerce-e-il-suo-database/">Come ottimizzare bene WooCommerce e il suo Database</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Oggi vediamo i passaggi che ho fatto per <strong>ottimizzare un database su Woocommerce</strong> e come ho migliorato nettamente le <strong>prestazioni</strong> del sito fatto con <strong>WordPress</strong>.</p>



<p>Procederemo in ordine con le tabelle più importanti e esose. Il <strong>database</strong> in questione <strong>pesa allo stato attuale 220 MB</strong>.</p>



<h2 class="wp-block-heading">wp_woocommerce_order_itemmeta</h2>



<p>Andiamo nel nostro <strong>MySQL</strong> e andiamo a selezionare la tabella &#8220;<strong>wp_woocommerce_order_itemmeta</strong>&#8220;.</p>



<p>Ora andiamo su &#8220;<strong>SQL</strong>&#8221; ed inseriamo questo comando</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;sql&quot;,&quot;mime&quot;:&quot;text/x-sql&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;SQL&quot;,&quot;language&quot;:&quot;SQL&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;sql&quot;}">SELECT COUNT(meta_key), meta_key FROM wp_woocommerce_order_itemmeta GROUP BY meta_key ORDER BY COUNT(meta_key) DESC</pre></div>



<p>Diamo invio e dovremmo ottenere questi risultati</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="437" height="1024" src="https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-15.23.30-437x1024.png" alt="" class="wp-image-4991" srcset="https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-15.23.30-437x1024.png 437w, https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-15.23.30-600x1407.png 600w, https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-15.23.30-128x300.png 128w, https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-15.23.30-768x1801.png 768w, https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-15.23.30-655x1536.png 655w, https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-15.23.30-873x2048.png 873w, https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-15.23.30.png 922w" sizes="auto, (max-width: 437px) 100vw, 437px" /></figure>



<p>Se notate ci sono delle meta_key non necessarie, quindi andiamo ad eliminarle.</p>



<p>Il comando che ho usato completo è questo nel mio caso, voi dovete trascriverle per come ve le ritrovate.</p>



<p>Esempio per andare a cancellare tutte le meta_key non necessarie:</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;sql&quot;,&quot;mime&quot;:&quot;text/x-sql&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;SQL&quot;,&quot;language&quot;:&quot;SQL&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;sql&quot;}">DELETE FROM wp_woocommerce_order_itemmeta
WHERE meta_key IN (
    'pa_scegliilcoloredellosmalto',
    'pa_scegliilgelmonofasico',
    'pa_scegliilcolore',
    'pa_scegliil2smalto',
    'pa_scegliil3smalto',
    'pa_sceglihardbuilderrefill',
    'pa_50-scriviquii3colorivertigoch',
    'pa_00-scriviquii6colori7mlchepre',
    'pa_scriviquii5coloridismalto',
    'pa_sceglialabase',
    'pa_84-scriviquii4coloricheprefer',
    'pa_10-scriviiilcoloreelapolvereco',
    'pa_8d-scriviquiilcolorediacrigel',
    'pa_scegliiosmaltoclassico',
    'pa_scegliilsemipermanente',
    'pa_scegliilcoloresemipermanente',
    'pa_c1-scriviquile2nuancecheprefe',
    'pa_14-scriviquiiilcolorecheprefer',
    'pa_41-scriviquiilcoloredismaltov',
    'pa_dd-scriviquiiilcolorecheprefer',
    'pa_scegliilprimer',
    'pa_69-scriviquii2coloricheprefer',
    'pa_4f-scriviquiilcoloreevolutoch',
    'pa_scegliilcoloredelabase',
    'pa_bc-scriviquiilcoloredellosmal',
    'pa_df-scriviquii5coloridelkitdis',
    'pa_sceglia2base',
    'pa_sceglia3base',
    'pa_69-scriviquii2glittercheprefe',
    'pa_scriviquii2colori7ml',
    'pa_scriviquiiilcolore7ml',
    'pa_scriviquii2colori14ml',
    'pa_scegliil4smalto',
    'pa_scegliilcoloredelgel',
    'pa_scegliilcolorecompresonelkit',
    'pa_4a-scriviquiiilcolorecheprefer',
    'pa_e9-scriviquii2coloridarkchepr',
    'pa_scegliilcoloredel3smalto',
    'pa_scegliiosmaltopastello',
    'pa_scegliil2smaltopastello',
    'pa_a5-scriviquiiilcoloresemiperma',
    'pa_scegliil1colore',
    'pa_scegliil2colore',
    'pa_scegliil3colore',
    'pa_scegliilcoloreacrygel',
    'pa_scegliillucidante',
    'pa_scegliilgelcostruttore',
    'pa_scriviquii3colori7ml',
    'pa_selezionalamisura',
    'pa_98-scriviquii2coloridismaltoe',
    'pa_a3-scriviquiilcoloredellosmal',
    'pa_scriviquii3coloridelkit',
    'pa_bc-scriviquiilriflessodellapo',
    'pa_3c-scriviquiilcoloredismaltoe',
    'pa_scrivii2colorichepreferisci',
    'pa_scriviquiilcolore',
    'pa_a9-scriviquiilcolore7mlcompre',
    'pa_scriviquii4coloriestremo12ml',
    'pa_scegliilcoloredel2smalto',
    'pa_scegliil2semipermanente',
    'pa_f5-scriviquiilcoloredismaltoc',
    'pa_scegliilcolorenude',
    'pa_scegliil2colorenude',
    'pa_4a-scriviquiilcoloresemiperma',
    'pa_e5-scriviquii2colorisemiperma',
    'pa_scegliilriflessochepreferisci',
    'pa_be-sceglilaformadellunghiache',
    'pa_6c-scriviquiilcoloredismaltoe',
    'pa_scegliil3smaltopastello',
    'pa_scegliil4smaltopastello',
    'pa_54-scriviquiilcolorecheprefer',
    'pa_2d-scriviquiilcoloredismaltoc',
    'pa_5c-scriviquilosmaltosemiperma',
    'pa_scriviqui3coloriformato14ml',
    'pa_smalton1',
    'pa_smalton2',
    'pa_smalton3',
    'pa_smalton4',
    'pa_smalton5',
    'pa_11-scegliilcolorediacrilgelch',
    'pa_d3-scegliilcolorepastellochep',
    'pa_27-scriviquiilcolorecheprefer',
    'pa_90-scriviquii2smaltiestremo12',
    'pa_scegliil2coloredellabase',
    'pa_scriviquii2coloripoly_acrigel',
    'pa_scegliil2coloreacrygel',
    'pa_e0-scriviquii2coloripoly_acri',
    'pa_scegliilcoloredel4smalto',
    'pa_91-scriviquiilcoloresmaltosem',
    'pa_9a-scriviquii2colorifluochepr',
    'pa_2d-scriviquiilcoloredismaltocla',
    'pa_7b-scriviquii2colorisemiperma',
    'pa_scegliosmaltoglitter',
    'pa_scegliil2smaltoglitter',
    'pa_coloreacrigel',
    'pa_eb-scriviquiilcoloresmaltosem',
    'pa_scegliotaglio',
    'pa_75-scriviquii2coloricheprefer',
    'pa_scriviquiilcoloreomaggio',
    'pa_60-scegliilcoloreglitterchepr',
    'pa_scriviqui3coloriformato7ml',
    'pa_colorediacrygel',
    'pa_scriviquiilcoloreformato14ml',
    'pa_ea-scriviquiilgelcostruttorec',
    'pa_a6-scriviquii4colori7mlchepre',
    'pa_scegliilglitterchepreferisci',
    'pa_90-scriviquiilcoloredellosmal',
    'pa_b9-scriviqui2coloridismaltoc',
    'pa_35-scriviquiualecoloredellauto',
    'pa_c7-scriviquiilcolorecheprefer',
    'pa_aa-scriviqui3coloricheprefer',
    'pa_62-sceglionusmaltosemiperma',
    'pa_e8-scriviquii3glittercheprefe',
    'pa_selezionalataglia',
    'pa_scegliilcoloresmalto',
    'pa_88-scriviquiilcoloredismaltoe',
    'pa_7c-scriviqui3coloricheprefer',
    'pa_d4-scegliilcoloreadattoallatu',
    'pa_84-scriviquiqualenailstickers',
    'pa_scegliilamatitaocchi',
    'pa_sceglii3glitterchepreferisci',
    'pa_ea-scriviquii2coloricheprefer',
    'pa_scriviquii5coloridelkit',
    'pa_30-indicaquiiilcoloredismalto7',
    'pa_colorediacrigel',
    'pa_scegliilcoloredelrossetto',
    'pa_coloreacrygel',
    'pa_b3-indicaquiiilcoloredismalto7',
    'pa_colori',
    'pa_coloresmalto1',
    'pa_aa-scegliilcolore7mlcheprefer',
    'pa_coloresmalto2',
    'pa_scegliil3smaltoglitter',
    'pa_coloresmalto3',
    'pa_coloresmalto4',
    'pa_f3-scriviquiilcoloredelsemipe'
);</pre></div>



<p>Potete usare anche il comando singolo:</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;sql&quot;,&quot;mime&quot;:&quot;text/x-sql&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;SQL&quot;,&quot;language&quot;:&quot;SQL&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;sql&quot;}">DELETE FROM wp_woocommerce_order_itemmeta WHERE meta_key = 'pa_scegliilcolorechepreferisci';</pre></div>



<p>Il risultato è il seguente:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="991" src="https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-16.43.22-1024x991.png" alt="" class="wp-image-4995" srcset="https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-16.43.22-1024x991.png 1024w, https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-16.43.22-600x581.png 600w, https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-16.43.22-300x290.png 300w, https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-16.43.22-768x743.png 768w, https://www.minimamente.com/wp-content/uploads/2024/08/Screenshot-2024-08-25-alle-16.43.22.png 1188w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>wp_usermeta</p>



<p>Ora faccio la stessa cosa un la tabella &#8220;wp_usermeta&#8221;</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;sql&quot;,&quot;mime&quot;:&quot;text/x-sql&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;SQL&quot;,&quot;language&quot;:&quot;SQL&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;sql&quot;}">SELECT COUNT(meta_key), meta_key FROM wp_usermeta GROUP BY meta_key ORDER BY COUNT(meta_key) DESC</pre></div>



<p>Seleziono dalla lista le meta_key che mi interessano e preparo nuovamente un altro SQL per cancellare tutto quello che non mi serve.</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;sql&quot;,&quot;mime&quot;:&quot;text/x-sql&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;SQL&quot;,&quot;language&quot;:&quot;SQL&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;sql&quot;}">DELETE FROM wp_usermeta
WHERE meta_key IN (
    '_fgm2wc_old_user_id',
    'magento_customer_id',
    'magento_user_id',
    'magentopass'
);</pre></div>



<p>Bonus, se volete una lista testuale delle meta_key con un comando SQL questo è quello da fare:</p>



<div class="wp-block-codemirror-blocks-code-block code-block"><pre class="CodeMirror" data-setting="{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;sql&quot;,&quot;mime&quot;:&quot;text/x-sql&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:true,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;SQL&quot;,&quot;language&quot;:&quot;SQL&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;sql&quot;}">SELECT GROUP_CONCAT(DISTINCT meta_key SEPARATOR '\n') FROM wp_usermeta;</pre></div>



<h2 class="wp-block-heading">Conclusione</h2>



<p>Questo vuole essere un caso di esempio, ma se comprendete le logiche ottimizzere la velocità del vostro sito nel back-end e anche nel front-end del vostro sito in WordPress.</p>
<p>L'articolo <a href="https://www.minimamente.com/come-ottimizzare-bene-woocommerce-e-il-suo-database/">Come ottimizzare bene WooCommerce e il suo Database</a> proviene da <a href="https://www.minimamente.com">minimamente</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.minimamente.com/come-ottimizzare-bene-woocommerce-e-il-suo-database/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
