Rimuovere voci menu dal pannello di controllo di WordPress

Con questa funzione è possibile rimuovere voci menu dal pannello di controllo di wordpress per tutti gli utenti con ruolo “Author”.

function guga_remove_menu_items() {
    if( current_user_can( 'author' )  ): //definisce il ruolo per applicare le voci da rimuovere
        remove_menu_page( 'edit.php?post_type=post-type-slug-1' );
        remove_menu_page( 'edit.php?post_type=post-type-slug-2' );
        remove_menu_page( 'wpcf7' ); //rimuove voce menu contact form 7
        remove_menu_page( 'jetpack' ); //rimuove voce menu jetpack
        remove_menu_page( 'tools.php' ); //rimuove voce menu strumenti
    endif;
}
add_action( 'admin_menu', 'guga_remove_menu_items' );

per maggiori info e riferimenti visita la pagina remove_menu_page

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();
}
?>

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://

 

Come aggiungere una classe CSS al primo e ultimo widget su WordPress

Certe volte diventa importante aggiungere nel primo e/o nell’ultimo widget una classe CSS che regoli semplicemente il float dell’oggetto. Navigando ho trovato questa utile e interessante funzione in php per aggiungere una classe CSS al primo e all’ultimo widget di WordPress . Basta copiarla nel file functions.php e automaticamente aggiunge al primo una classe “first” e all’ultimo una classe “end”.

Fonte:
http://www.wptaskforce.com/wordpress-how-to-add-first-and-last-css-classes-for-sidebar-widgets/

function widget_first_last_classes($params) {
 global $my_widget_num;
 $this_id = $params[0]['id'];
 $arr_registered_widgets = wp_get_sidebars_widgets();
 if(!$my_widget_num) {
 $my_widget_num = array();
 }
 if(!isset($arr_registered_widgets[$this_id]) || !is_array($arr_registered_widgets[$this_id])) {
 return $params;
 }
 if(isset($my_widget_num[$this_id])) {
 $my_widget_num[$this_id] ++;
 } else {
 $my_widget_num[$this_id] = 1;
 }
 $class = 'class="widget-' . $my_widget_num[$this_id] . ' ';
 if($my_widget_num[$this_id] == 1) {
 $class .= 'first ';
 } elseif($my_widget_num[$this_id] == count($arr_registered_widgets[$this_id])) {
 $class .= 'end  ';
 }
 $params[0]['before_widget'] = str_replace('class="', $class, $params[0]['before_widget']);
 return $params;
 }
 add_filter('dynamic_sidebar_params','widget_first_last_classes');