Archivio 30 Giugno 2016

Divi Mobile Menu Collapsed

Vi segnalo questo interessante articolo presente sul sito di eleganthemes dove viene spiegato come raggruppare i sottomenu nel menu mobile.

Di default Divi non prevede il raggruppamento nascosto delle voci di sottomenu (nel menu mobile) e a volte questo può essere comodo se si hanno tante voci sotto i menu principali.

Mi chiedevo anch’io se non esistesse qualche featured già predisposta e come per magia proprio di recente elegant themes ha scritto questo articolo (datato maggio 2016)

Ecco qui il link per accedere all’articolo:

Divi Mobile Menu Hack: Collapsing Nested Menu Items – Divi Nation Short

Qui invece per comodità appunto il codice da inserire nel CSS e nell’header del template:

CSS che aggiunge l’effetto collapse:
/*collapse menu*/
#main-header .et_mobile_menu .menu-item-has-children > a { background-color: transparent; position: relative; }
#main-header .et_mobile_menu .menu-item-has-children > a:after { font-family: 'ETmodules'; text-align: center; speak: none; font-weight: normal; font-variant: normal; text-transform: none; -webkit-font-smoothing: antialiased; position: absolute; }
#main-header .et_mobile_menu .menu-item-has-children > a:after { font-size: 16px; content: '\4c'; top: 13px; right: 10px; }
#main-header .et_mobile_menu .menu-item-has-children.visible > a:after { content: '\4d'; }
#main-header .et_mobile_menu ul.sub-menu { display: none !important; visibility: hidden !important; transition: all 1.5s ease-in-out;}
#main-header .et_mobile_menu .visible > ul.sub-menu { display: block !important; visibility: visible !important; }

Javascript per il funzionamento collapse:

(function($) {
function setup_collapsible_submenus() {
var $menu = $('#mobile_menu'),
top_level_link = '#mobile_menu .menu-item-has-children > a';
$menu.find('a').each(function() {
$(this).off('click');
if ( $(this).is(top_level_link) ) {
$(this).attr('href', '#');
}
if ( ! $(this).siblings('.sub-menu').length ) {
$(this).on('click', function(event) {
$(this).parents('.mobile_nav').trigger('click');
});
} else {
$(this).on('click', function(event) {
event.preventDefault();
$(this).parent().toggleClass('visible');
});
}
});
}
$(window).load(function() {
setTimeout(function() {
setup_collapsible_submenus();
}, 700);
});
})(jQuery);

Filtro di ricerca Custom Post Type WordPress

Non so se vi sia mai capitato di dover attivare dei custom post type in uno dei vostri sito wordpress. In pratica wordpress permette di creare una nuova “area” di caricamento articoli/post indipendenti da articoli e pagine. Un esempio di custom post type per esempio sono gli eventi (quando vedere anche la gestione di essi nel menu a lato). Di recente mi è capitato di dover personalizzare un custom post type in amministrazione perchè volevo poter filtrare come per gli articoli i vari post per categoria. Cercando online ho quindi trovato questo codice per attivare l’opzione filtro anche per il custom type.

PREMESSA: se attivate voi stessi il custom post type potreste trovare attivo di default il filtro di ricerca per “data di inserimento” ed il pulsante per avviare la ricerca. Se invece volete aggiungere questa opzione ad un custom post type già configurato (es. Event Manager) il plugin installato potrebbe aver volutamente aver disattivato questa opzione.

Nel mio caso io volevo proprio attivare la ricerca di un plugin (proprio Tribe Event Manager) che lo aveva nascosto.

Ecco cosa ho fatto per riattivare il tutto:

  1. Nel CSS del plugin ho cercato la stringa che nascondeva il pulsante “filtro”
  2. Ho inserito il secuenge codice nel functioncs.php del tema:


//disattivo filtro per data di inserimento
add_filter( 'disable_months_dropdown' , 'custom_disable_months_dropdown' , 10 , 2 );
function custom_disable_months_dropdown( $false , $post_type ) {
$disable_months_dropdown = $false;
$disable_post_types = array( 'tribe_events');
if( in_array( $post_type , $disable_post_types ) ) {
$disable_months_dropdown = true;
}
return $disable_months_dropdown;
}
//attivazione filtro per categoria negli eventi
add_action( 'restrict_manage_posts', 'my_filter_list' );
function my_filter_list() {
$screen = get_current_screen();
global $wp_query;
if ( $screen->post_type == 'tribe_events' ) {
wp_dropdown_categories( array(
'show_option_all' => 'Categorie Eventi',
'taxonomy' => 'tribe_events_cat',
'name' => 'tribe_events_cat',
'orderby' => 'name',
'selected' => ( isset( $wp_query->query['tribe_events_cat'] ) ? $wp_query->query['tribe_events_cat'] : '' ),
'hierarchical' => false,
'depth' => 3,
'show_count' => false,
'hide_empty' => true,
) );
}
}

add_filter( 'parse_query','perform_filtering' );
function perform_filtering( $query ) {
$qv = &$query->query_vars;
if ( ( $qv['tribe_events_cat'] ) && is_numeric( $qv['tribe_events_cat'] ) ) {
$term = get_term_by( 'id', $qv['tribe_events_cat'], 'tribe_events_cat' );
$qv['tribe_events_cat'] = $term->slug;
}
}

 

Per maggior informazioni leggetevi anche questo articolo da cui ho preso spunto:
http://wpadminuicustomize.com/blog/how-to-customize-the-filter-search-on-the-posts-listsedit-php/

Modificare slug “project” in Divi Theme

divi-logo

Utilizzate anche voi il tema DIVI per i vostri progetti e vi farebbe comodo modificare lo slug che compare nell’url dei progetti per utilizzare il custom post type per altri utilizzi? E magari perchè no modificare il permalink
per aggiungere, come per gli articoli per esempio, la categoria principale a cui appartiene il progetto?

Anch’io avevo bisogno di farlo e finalmente ho trovato la soluzione. I due, anche all’apparenza hanno soluzioni separate ma funzionano benissimo insieme.

OBIETTIVO

La mia necessità era quella di trasformare lo slug da progetti a prodotti e aggiungere nel permalink la categoria e il suffisso .html ovvero:

Da cosi: www.dominio.it/project/nome-prodotto

a così: www.dominio.it/prodotti/categoria-prodotto/nome-prodotto.html

SOLUZIONE

1) SLUG da project a prodotti

Ho trovato una soluzione molto completa che permette, oltre a cambiare lo slug di project anche di personalizzare tutto quello che è associato al custom type (menu laterale, etichette, etc). Basta inserire (e personalizzare a piacere) il seguente codice nel file functions.php del vostro tema:

function child_et_pb_register_posttypes() { $labels = array( 'add_new' => __( 'Aggiungi Nuovo', 'Divi' ),
'add_new_item' => __( 'Aggiunti nuovo prodotto', 'Divi' ),
'all_items' => __( 'Tutti i prodotti', 'Divi' ),
'edit_item' => __( 'Modifica prodotti', 'Divi' ),
'menu_name' => __( 'Prodotti', 'Divi' ),
'name' => __( 'Prodotti', 'Divi' ),
'new_item' => __( 'Nuovo prodotto', 'Divi' ),
'not_found' => __( 'Nothing found', 'Divi' ),
'not_found_in_trash' => __( 'Nothing found in Trash', 'Divi' ),
'parent_item_colon' => '',
'search_items' => __( 'Cerca prodotti', 'Divi' ),
'singular_name' => __( 'Prodotto', 'Divi' ),
'view_item' => __( 'Visualizza prodotto', 'Divi' ),
);


$args = array(
'can_export' => true,
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'labels' => $labels,
'menu_icon' => 'dashicons-image-filter',
'menu_position' => 5,
'public' => true,
'publicly_queryable' => true,
'query_var' => true,
'show_in_nav_menus' => true,
'show_ui' => true,
'rewrite' => apply_filters( 'et_project_posttype_rewrite_args', array(
'feeds' => true,
'slug' => 'prodotti',
'with_front' => false,
)),
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments', 'revisions', 'custom-fields' ),
);
register_post_type( 'project', apply_filters( 'et_project_posttype_args', $args ) );

$labels = array(
'name' => _x( 'Categorie', 'Products category name', 'Divi' ),
'singular_name' => _x( 'Categoria', 'Products category singular name', 'Divi' ),
'search_items' => __( 'Search Categories', 'Divi' ),
'all_items' => __( 'Tutte le categorie', 'Divi' ),
'parent_item' => __( 'Categoria Padre', 'Divi' ),
'parent_item_colon' => __( 'Categoria Padre:', 'Divi' ),
'edit_item' => __( 'Modifica Categoria', 'Divi' ),
'update_item' => __( 'Aggiorna Categoria', 'Divi' ),
'add_new_item' => __( 'Aggiungi Nuova Categoria', 'Divi' ),
'new_item_name' => __( 'Nuova categoria', 'Divi' ),
'menu_name' => __( 'Categorie', 'Divi' ),
);

register_taxonomy( 'project_category', array( 'project' ), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
) );

$labels = array(
'name' => _x( 'Tags', 'Products Tag name', 'Divi' ),
'singular_name' => _x( 'Tag', 'Product tag singular name', 'Divi' ),
'search_items' => __( 'Search Tags', 'Divi' ),
'all_items' => __( 'All Tags', 'Divi' ),
'parent_item' => __( 'Parent Tag', 'Divi' ),
'parent_item_colon' => __( 'Parent Tag:', 'Divi' ),
'edit_item' => __( 'Edit Tag', 'Divi' ),
'update_item' => __( 'Update Tag', 'Divi' ),
'add_new_item' => __( 'Aggiungi Nuovo Tag', 'Divi' ),
'new_item_name' => __( 'New Tag Name', 'Divi' ),
'menu_name' => __( 'Tags', 'Divi' ),
);

register_taxonomy( 'project_tag', array( 'project' ), array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
) );

$labels = array(
'name' => _x( 'Layouts', 'Layout type general name', 'Divi' ),
'singular_name' => _x( 'Layout', 'Layout type singular name', 'Divi' ),
'add_new' => _x( 'Aggiungi Nuovo', 'Layout item', 'Divi' ),
'add_new_item' => __( 'Aggiungi Nuovo Layout', 'Divi' ),
'edit_item' => __( 'Edit Layout', 'Divi' ),
'new_item' => __( 'New Layout', 'Divi' ),
'all_items' => __( 'All Layouts', 'Divi' ),
'view_item' => __( 'View Layout', 'Divi' ),
'search_items' => __( 'Search Layouts', 'Divi' ),
'not_found' => __( 'Nothing found', 'Divi' ),
'not_found_in_trash' => __( 'Nothing found in Trash', 'Divi' ),
'parent_item_colon' => '',
);

$args = array(
'labels' => $labels,
'public' => false,
'can_export' => true,
'query_var' => false,
'has_archive' => false,
'capability_type' => 'post',
'hierarchical' => false,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments', 'revisions', 'custom-fields' ),
);
register_post_type( 'et_pb_layout', apply_filters( 'et_pb_layout_args', $args ) );
}

function remove_et_pb_actions() {
remove_action( 'init', 'et_pb_register_posttypes', 15 );
}

add_action( 'init', 'remove_et_pb_actions');
add_action( 'init', 'child_et_pb_register_posttypes', 20 );

2) PERMALINK

Per personalizzare il permalink da /prodotti/nome-prodotto a /prodotti/categoria-prodotto/nome-prodotto.html ho innanzitutto installato il seguente plugin:

http://blog.garethjmsaunders.co.uk/2015/03/07/changing-the-divi-projects-custom-post-type-to-anything-you-want/

E poi nella pagina dove si personalizzano i permalink ho impostato il permalink per il mio custom post type come desideravo:

Schermata 2016-06-20 alle 15.13.46

Mi pare doveroso ringraziare l’autore di questo articolo:

http://blog.garethjmsaunders.co.uk/2015/03/07/changing-the-divi-projects-custom-post-type-to-anything-you-want/

che mi ha permesso di trovare la soluzione al cambio di slug che da tempo cercavo e al supporto tecnico di elegant themes che mi ha suggerito il plugin per il rewrite del permalink.

 

©2022 AGANIS WEB SOFTWARE di Francesca Roccabruna | P.IVA TRENTO 02183500228 - N.REA 205930
contatti | cookies | Privacy Policy