Actualmente estoy usando esto para enumerar todas las categorías:
<?php
$args = array (
'menu' => 'secondary-navigation',
'sort_column' => 'menu_order',
'container' => 'false',
'title_li' => 0,
'hide_empty' => 0
);
wp_list_categories($args);
?>
Esto simplemente enumerará todas las categorías en jerarquía y con cada elemento anclado.
Mis categorías en realidad están configuradas así:
Parent
-> Child
-> Grandchild
-> Great Grandchild
Mi problema es que solo quiero que los bisnietos tengan anclas. No quiero que Padre, Hijo o Nieto tengan anclas.
Cualquier sugerencia sera apreciada.
Simplemente puede deshabilitar los enlaces usando CSS puro sin cambiar ningún código php. Verifique el siguiente código, cambiará el cursor del mouse, deshabilitará la función de enlace y ocultará el estilo de subrayado:
.cat-item a, .cat-item .cat-item .cat-item .cat-item a {
cursor: default;
pointer-events: none;
text-decoration: none;
}
.cat-item .cat-item .cat-item a {
cursor: pointer;
pointer-events: auto;
text-decoration: underline;
/* also add here any special style for grandchildren categories */
}
El resultado será exactamente como lo requiere, solo la categoría de nieto parece estar anclada.
Espero que responda a su pregunta
cmptrgeekken
Como menciona Lleo Holmes en los comentarios, el mejor enfoque es crear un personalizado Clase caminante para implementar esta funcionalidad. Le di una puñalada y se me ocurrió lo siguiente:
class Depth_Category_Walker extends Walker_Category {
private $allowed_depths;
function __construct( $depths_to_link = array() ) {
$this->allowed_depths = !is_array($depths_to_link) ? array($depths_to_link) : $depths_to_link;
}
function start_el( &$output, $category, $current_depth = 0, $args = array(), $id = 0 ) {
extract($args);
if( in_array( $current_depth, $this->allowed_depths ) ) {
parent::start_el( $output, $category, $current_depth, $args, $id );
} else {
$cat_name = esc_attr( $category->name );
$cat_name = apply_filters( 'list_cats', $cat_name, $category );
if ( !empty($show_count) )
$cat_name .= ' (' . intval($category->count) . ')';
if ( 'list' == $args['style'] ) {
$output .= "\t<li";
$class="cat-item cat-item-" . $category->term_id;
if ( !empty($current_category) ) {
$_current_category = get_term( $current_category, $category->taxonomy );
if ( $category->term_id == $current_category )
$class .= ' current-cat';
elseif ( $category->term_id == $_current_category->parent )
$class .= ' current-cat-parent';
}
$output .= ' class="' . $class . '"';
$output .= ">$cat_name\n";
} else {
$output .= "\t$cat_name<br />\n";
}
}
}
}
Esto extiende la Walker_Category
clase para que podamos llamar parent::start_el()
para producir el enlace si está a la profundidad adecuada. El constructor acepta una matriz de profundidades que contiene los niveles en los que desea mostrar enlaces. Cualquier profundidad que quede fuera de esa matriz se representará como texto sin formato. Tenga en cuenta que el else
el código fue tomado de Walker_Category::start_el
por lo que esto podría romperse en versiones futuras, si la clase base se modifica alguna vez.
La clase anterior se puede utilizar llamando wp_list_categories
me gusta:
<?php
$args = array(
'orderby' => 'menu_order',
'title_li' => 0,
'hide_empty' => 0,
'walker' => new Depth_Category_Walker(2)
);
?>
<ul>
<?php wp_list_categories( $args ); ?>
</ul>
Rajeev
Por favor usa este código
$categories = get_categories(array(
'child_of' => 9,
'hide_empty' => false
));
foreach($categories as $cat){
echo $cat->name;
echo '<br />';
}
este código solo se prueba para la categoría de dos niveles.
Reemplace 9 con su identificación de categoría como con la identificación de categoría “Nieto”. Este código no está probado, pero funciona.
Espero que esto sea útil para ti.
¿No quiere que aparezcan el padre, el hijo y el nieto? o simplemente no los quiere vinculados? Probablemente necesite usar un caminante personalizado para representar la lista haciendo verificaciones en los antepasados del elemento actual (si tiene 3, muéstrelo, de lo contrario no lo haga). Alternativamente, si está ocultando todos los enlaces, puede usar CSS. Esto ayudará scribu.net/wordpress/extendiendo-la-categoría-walker.html
– Lleo
31 de diciembre de 2012 a las 6:58