Aggiungere la classe "current_page_item" al menu per custom post type

4 gen 2011, 23:01:05
Visualizzazioni: 15.7K
Voti: 2

Sto utilizzando il seguente codice per visualizzare un elenco di post creati in un custom post type.

$args = array(
  'post_type'=>'portfolio',
  'title_li'=> __('Portfolio') // Traduzione del titolo "Portfolio"
);
wp_list_pages( $args ); 

Tuttavia non viene aggiunta la classe all'elemento della lista della pagina corrente (current_page_item). Qualcuno ha idee su come risolvere questo problema?

0
Tutte le risposte alla domanda 6
0

Controlla questo ticket: http://core.trac.wordpress.org/ticket/17590

Soluzione rapida proposta da husobj:

function my_page_css_class( $css_class, $page ) {
    global $post;
    if ( $post->ID == $page->ID ) {
        $css_class[] = 'current_page_item';
    }
    return $css_class;
}
add_filter( 'page_css_class', 'my_page_css_class', 10, 2 );

Questa soluzione rapida potrebbe essere un'alternativa più semplice? Saluti

10 mag 2012 11:38:38
0

Ho trovato questo e funziona perfettamente!

Navigazione dinamica per custom post type (pagine)

5 gen 2011 01:26:29
0

Puoi utilizzare questo codice per rendere attivo il tipo di post genitore nel menu:

<?php

add_action('nav_menu_css_class', 'add_current_nav_class', 10, 2 );

function add_current_nav_class($classes, $item) {

    // Ottenere i dettagli del post corrente
    global $post;

    // Ottenere il tipo di post del post corrente
    $current_post_type = get_post_type_object(get_post_type($post->ID));
    $current_post_type_slug = $current_post_type->rewrite[slug];

    // Ottenere l'URL della voce di menu
    $menu_slug = strtolower(trim($item->url));

    // Se l'URL della voce di menu contiene lo slug del tipo di post corrente, aggiungi la classe current-menu-item
    if (strpos($menu_slug,$current_post_type_slug) !== false) {

       $classes[] = 'current-menu-item';

    }

    // Restituisce l'array di classi corretto da aggiungere alla voce di menu
    return $classes;

}

?>

Ho trovato questo codice in questo Gist e ha funzionato per me - contrassegna la navigazione genitore come attiva quando ci si trova in un singolo post di un tipo di post personalizzato.

12 lug 2016 08:05:31
0

Vorrei aggiungere una soluzione alternativa che ha funzionato nel mio caso.

Avevo un Custom Post Type con una Tassonomia Personalizzata e volevo elencare questi post solo se appartenevano a una particolare Categoria Personalizzata - con la classe della pagina corrente sul tag li.

Il codice sopra* produceva un elenco di tutti i post, ma non filtrava le categorie.
* [nota del redattore] L'ordine delle risposte può variare, non sono sicuro a quale codice si riferisca.

La mia soluzione deriva da quel codice, non so se sia la migliore pratica, ma funziona...

<?php
// ottieni l'ID della pagina/post corrente
$pageID = get_the_ID();
query_posts( array( 'post_type' => 'developments', 'custom_cat' => 'current' ) );
if ( have_posts() ) : 
    while ( have_posts() ) : 
        the_post();
        // verifica se l'ID della pagina/post corrente corrisponde
        if ( $post->ID == $pageID ) {
            $class = 'current_page_item';
        } else {
            $class = '';
        }
?>
        <li <?php if ($class != '') echo 'class="'.$class.'"'; ?>>
            <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
        </li>
<?php 
    endwhile; 
endif; 
wp_reset_query(); 
?>
31 mag 2012 20:06:03
0

Devi aggiungere questo al tuo functions.php:

function kct_page_css_class( $css_class, $page, $depth, $args, $current_page ) {
  if ( !isset($args['post_type']) || !is_singular($args['post_type']) )
    return $css_class;

  global $post;
  $current_page  = $post->ID;
  $_current_page = $post;
  _get_post_ancestors($_current_page);

  if ( isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors) )
    $css_class[] = 'current_page_ancestor';
  if ( $page->ID == $current_page )
    $css_class[] = 'current_page_item';
  elseif ( $_current_page && $page->ID == $_current_page->post_parent )
    $css_class[] = 'current_page_parent';

  return $css_class;
}
add_filter( 'page_css_class', 'kct_page_css_class', 10, 5 );

Tramite http://kucrut.org/wp_list_pages-for-custom-post-types/

13 set 2012 15:54:45
0
if(site_url()."/".get_post_type() == $menu_item->url || site_url()."/".$post->post_name == $menu_item->url){#STUFF TO IDENTIFY ON FRONT}

mi aiuta ad aggiungere la classe "active" all'elemento corrente del menu quando eseguo il LOOP di wp_get_nav_menu_items come foreach($primary_nav_menu_items as $n => $menu_item){#do something}. Potrebbe essere utile a qualcuno.

1 gen 2017 22:25:16