Agregar la clase "current_page_item" para el menú de tipo de publicación personalizado

2

Estoy usando lo siguiente para ayudar a mostrar una lista de publicaciones creadas en un tipo de publicación personalizada.

$args = array(
  'post_type'=>'portfolio',
  'title_li'=> __('Portfolio')
);
wp_list_pages( $args ); 

Sin embargo, no se está agregando una clase al elemento de la lista de la página actual ( current_page_item ). ¿Alguna idea de cómo podría hacer que esto suceda?

    
pregunta Red 04.01.2011 - 22:01

6 respuestas

1

¡Encontré esto y funciona perfectamente!

Navegación dinámica para el tipo de publicación personalizada (páginas)

    
respondido por el Red 05.01.2011 - 00:26
3

Marque este ticket: enlace

Quickfix by 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 );

¿El quickfix podría ser una alternativa más fácil? Saludos

    
respondido por el lepardman 10.05.2012 - 10:38
1

Puede usar este código para activar el tipo de publicación principal en el menú:

<?php

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

function add_current_nav_class($classes, $item) {

    // Getting the current post details
    global $post;

    // Getting the post type of the current post
    $current_post_type = get_post_type_object(get_post_type($post->ID));
    $current_post_type_slug = $current_post_type->rewrite[slug];

    // Getting the URL of the menu item
    $menu_slug = strtolower(trim($item->url));

    // If the menu item URL contains the current post types slug add the current-menu-item class
    if (strpos($menu_slug,$current_post_type_slug) !== false) {

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

    }

    // Return the corrected set of classes to be added to the menu item
    return $classes;

}

?>

Encontré este código en este Gist y funcionó para mí: marca la navegación principal como activa cuando está en una tipo de mensaje personalizado solo post.

    
respondido por el Jatinder Kaur 12.07.2016 - 07:05
0

Necesitas agregar esto a tus funciones.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 );

A través de enlace

    
respondido por el bryceadams 13.09.2012 - 14:54
0

Me gustaría agregar una solución que funcionó en mi situación.

Tuve Tipo de Publicaciones Personalizadas con Taxonomía Personalizada y quería enumerar estas publicaciones siempre y cuando estuvieran en una Categoría Personalizada en particular, con la clase de página actual en el li .

El código de arriba * produjo una lista de todas las publicaciones, pero no filtró categorías.
* [nota del editor] Las respuestas pueden variar su orden, no seguro de qué código se está refiriendo.

Mi solución proviene de ese código, no estoy seguro de si es la mejor práctica, pero funciona ...

<?php
// get current page/post ID
$pageID = get_the_ID();
query_posts( array( 'post_type' => 'developments', 'custom_cat' => 'current' ) );
if ( have_posts() ) : 
    while ( have_posts() ) : 
        the_post();
        // test if current page/post ID matches
        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(); 
?>
    
respondido por el FLOQ Design 31.05.2012 - 19:06
0
if(site_url()."/".get_post_type() == $menu_item->url || site_url()."/".$post->post_name == $menu_item->url){#STUFF TO IDENTIFY ON FRONT}

me ayuda a agregar la clase activa actual al elemento de menú actual cuando LOOP CUAL wp_get_nav_menu_items como foreach($primary_nav_menu_items as $n => $menu_item){#do something} . Puede ayudar a alguien.

    
respondido por el Vishal Kumar Sahu 01.01.2017 - 21:25

Lea otras preguntas en las etiquetas