Come si fa a mostrare i prezzi dopo aver fatto Login su Woocommerce?

Incollando questo codice sul file functions.php, il vostro tema non mostrerà più i prezzi dei prodotti invitando i visitatori a loggarsi o registrarsi per poterli vedere. Questa soluzione elimina anche il pulsante aggiungi al carrello.

function woocommerce_show_price_logged($price){
    if(is_user_logged_in() ){
        return $price;
    } else {
        add_action( 'woocommerce_single_product_summary', 'woocommerce_login_to_see_price', 31 );
        add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_login_to_see_price', 11 );
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
        remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
    }
}

add_filter('woocommerce_get_price_html', 'woocommerce_show_price_logged');
 
function woocommerce_login_to_see_price() {
        echo 'Registrati per vedere i prezzi';
}

Rimuovere il pulsante acquista dalle liste di prodotti su woocommerce

Condivido una funzione php da usare su wordpress che può essere molto utile per chi vuole rimuovere il pulsante “Acquista” da tutte liste di prodotti di woocommerce. La funzione viene usata in combinazione con la action hook “woocommerce_template_loop_add_to_cart” qui descritta e va incollata nel file functions.php perchè funzioni.


function woocommerce_remove_loop_button() {
    remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10);

}
add_action('init', 'woocommerce_remove_loop_button');

Controllare se Woocommerce è attivo o no

Qui una piccola funzione molto utile presa dal tema Storefront per controllare se il plugin di Woocommerce è attivo o no.

if ( ! function_exists( 'is_woocommerce_activated' ) ) {
	function is_woocommerce_activated() {
		return class_exists( 'woocommerce' ) ? true : false;
	}
}

come usarla

if ( is_woocommerce_activated() ) {
    echo 'woocomemrce plugin is active :)';	
} else {
    echo 'woocommerce plugin is not active :(';
}

Forzare l’utilizzo https per tutto il sito con PHP Seo friendly 301

Può capitare di non poter modificare il file .htaccess oppure che le regole mod_rewrite per qualche strano motivo non funzionino, allora non rimane che usare PHP per forzare l’uso del HTTPS su tutto il sito.

Con questo piccolo controllo siamo in grado di forzare l’uso del protocollo HTTPS su tutto il sito. Questo codice funziona su tutte le piattaforme che usano PHP come linguaggio di sviluppo.

Per farlo funzionare su WordPress inserite il codice in cima al file header.php del vostro tema. Se usate un tema base come TwentyFifteen allora vi consiglio di crearvi un Tema Figlio per evitare di perdere le modifiche dopo un aggiornamento automatico.

 

<?php   
if (! isset($_SERVER['HTTPS']) or $_SERVER['HTTPS'] == 'off' ) {
    $redirect_url = "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    header("Location: $redirect_url", TRUE, 301);
    exit();
}
?>

oppure più semplicemente

<?php 

if(empty($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] !== "on")
{
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"], TRUE, 301);
    exit();
}
?>

Disattivare la cache di varnish con .htaccess o via php

Varnish è uno dei cache proxy più utilizzati per accelerare la navigazione di un sito web dinamico. Quasi tutti i provider di hosting stranieri lo stanno adottando e ne traggono un enorme vantaggi,o visto che abbassa notevolmente il carico di lavoro dei loro server è velocizza la fruizione delle pagine rendendo i siti dei loro clienti sempre più veloci nella navigazione…

Cmq spesso può essere utile disattivare Varnish perché magari si stanno facendo delle modifiche sul proprio sito web e diventa noioso fare purge cache per ogni singola modifica che si, anceh solo sul CSS. Come fare? Semplice basta aggiungere questa riga sul file .htaccess ed è fatta. A modifiche finite basta comentare quella riga e Varnish ritorna a fare il suo sporco lavoro.

#disattiva varnish
Header add "disablevcache" "true"

Via PHP invece dovresti usare questo codice:

header("Cache-Control: max-age=1");

 

WP funzione per elencare i termini di una tassonomia con la gerarchia

Questa funzione prende il termine di una tassonomia stampa una lista annidata con tutti i termini figli e viceversa.

function get_taxonomies_terms_list($taxonomy){
    $termine = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
    
    $ancestor = get_ancestors( $termine->term_id, $taxonomy );
    $childs = get_term_children( $termine->term_id, $taxonomy );
    
    array_push($childs, $termine->term_id);
    $ancestor_ids = implode(',', $ancestor);
    $child_ids = implode( ',' , $childs );
    
    if(isset($taxonomy)){
        
    $args = array (
        'taxonomy' => $taxonomy,
        'hide_empty' => 1,
        'include' => $child_ids.','.$ancestor_ids,
        'orderby' => 'name'
    );
    
    $terms = wp_list_categories( $args );
        if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
            foreach ( $terms as $term ) {
                if (0 == $term->parent) { $parentsItems[] = $term; }
                if ($term->parent) { $childItems[] = $term; }
            } 
            if(is_taxonomy_hierarchical( $taxonomy )){
                foreach ($parentsItems as $parentsItem){
                    echo '<h4>'.$parentsItem->name.'</h4>';
                    echo '<ul>';
                    foreach($childItems as $childItem){
                        if ($childItem->parent == $parentsItem->term_id){
                            echo '<li>'.$childItem->name.'</li>';
                        }
                    }
                    echo '</ul>';
                }
            }else{
                echo '<ul>';
                foreach($parentsItems as $parentsItem){
                    echo '<li>'.$parentsItem->name.'</li>';
                }
                echo '</ul>';
            }
        }
    }
}

Come disabilitare l’analizzatore di elemento su Firefox evviva Firebug

Oggi mi sono proprio stufato perché continuavo a cliccare su analizza elemento di firefox invece di cliccare sul mio preferito tool che è  firebug. Ad un certo punto ho detto basta, devo assolutamente trovare un modo per sbarazzarmi di questo fastidioso problema che continuava a frustrarmi e così mi sono deciso di spendere 15 min della mia giornata lavorativa a provare per cercare di disabilitare l’analizzatore di firefox. Premetto che non ho nulla in contrario a questo tool che tra l’altro funziona molto bene, semplicemente mi sono affezionato firebug e non mi va di cambiare per adesso. Cmq  per farla breve sono andato sul configuratore di firefox usando il comando about:config sulla barra degli indirizzi di firefox ed ho cercato “inspector” ed ho trovato questa voce extensions.firebug.hideDefaultInspector impostata sul false. Ho provato a impostarla su true et voila l’analizza elemento è sparito. Che sollievo…

Disabilitare l'analizzatore di elemento su Firefox

Migrare il tuo sito wordpress sul protocollo https ottimizzando per i motori di ricerca

Come ho già scritto nell’articolo precedente, usare il protocollo https:// migliora il posizionamento del tuo sito rispetto alla concorrenza che non si è ancora attrezzata.
Migrare un sito wordpress da http a https non è un task difficile ma potrebbe risultare disastroso da un punto di vista SEO se non si fa nel modo giusto.

Prima di tutto nelle impostazione generali della tua installazione wordpress bisogna cambiare gli URL con il protocollo https:// come nella foto.

impostazioni generali wordpress https

Poi bisogna fare una modifica al file .htaccess del tuo wordpress aggiungendo queste due righe:

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{SERVER_NAME}/blog/$1 [R=301,L]

che dicono al tuo server apache di inoltrate il traffico verso il protocollo https:// riscrivendo l’url con redirect codice 301, insomma SEO friendly…

Il tuo .htaccess dovrebbe assomigliare più o meno a questo se la tua installazione sta in una cartella /blog/

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{SERVER_NAME}/blog/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress

invece se la tua installazione sta nella root del tuo sito allora l’.htaccess dovrebbe essere come questa:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

In questo modo tutti i tuoi url indicizzati su google e altri passeranno da http:// a https://

 

Forzare https usando .htaccess con mod_rewrite e migliora la SEO del tuo sito

Ormai è risaputo che migrare il proprio sito dal protocollo http al https fa bene al suo posizionamento, perché Google premia i siti che rendono sicura la navigazione dei propri utenti. Questo è stato reso ufficiale proprio da Google ad agosto del 2014 con un post sul webmastercentral blog. Leggi qui l’articolo…

Una volta acquisito il certificato SSL per il proprio webserver / hosting bisogna inoltrare il traffico in arrivo verso il protocollo https:// e qui entra in funzione il fantastico file .htaccess.

RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.iltuodominio.it/ [R=301,L]

Con queste due righe di codice diamo una semplice direttiva al server web apache dicendoli di inoltrare il traffico verso il protocollo sicuro https:// ottimizzandolo da un punto di vista seo con il codice 301.