Eliminando título de wp_list_categories()

4 minutos de lectura

avatar de usuario
Alex

Estoy tratando de eliminar/reemplazar el atributo de título en los elementos de categoría utilizados por WordPress. Estoy usando WordPress 2.9.1, con el siguiente código:

<div id="categories">
    <h3>Manufacturers</h3>
        <ul>
            <?php str_replace("title=\"View all posts filed under ","",wp_list_categories('use_desc_for_title=0&exclude=1,2,3,4,5&title_li=&hierarchical=1')); ?>
        </ul>
</div>

Por lo que había leído, este método solía funcionar en versiones anteriores (aunque nunca lo había probado). Realmente no quiero hackear las partes internas de WordPress, o tener que usar un hack de JavaScript, para algo tan sencillo. Cualquier ayuda es apreciada…

Actualizar
a continuación se muestra lo que se crea a partir del código anterior…

<div id="categories">
<h3>Manufacturers</h3>
<ul>
<li class="cat-item cat-item-7"><a href="http://localhost/crosstrainers/?cat=7" title="View all posts filed under Featured">Featured</a>
</li>
</ul>
</div>

  • ¿Puede especificar qué quiere decir con “elementos de categoría” para los expertos que no son WP?

    – Peka

    8 de marzo de 2010 a las 23:00

  • … y mostrar parte del código HTML ofensivo?

    – Peka

    8 de marzo de 2010 a las 23:12

  • Las categorías se asocian (opcionalmente) con las publicaciones del blog, y cuando se muestran usando wp_list_categories(), sigue agregando un elemento de título predeterminado (por ejemplo, title=”Ver todas las publicaciones archivadas en #categoría” al ancla que crea. Parece que no puedo eliminar o reemplazar el título

    – Alex

    8 de marzo de 2010 a las 23:13

Si no desea utilizar el complemento, elimine el código del Eliminar complemento de atributos de título puede ver la función principal utilizada para eliminar los títulos de las categorías.

abra su archivo template/function.php e inserte lo siguiente…

function wp_list_categories_remove_title_attributes($output) {
    $output = preg_replace('` title="(.+)"`', '', $output);
    return $output;
}
add_filter('wp_list_categories', 'wp_list_categories_remove_title_attributes');

esto agregará un nuevo filtro que reemplaza la función wp_list_categories utilizada por wordpress y lo reemplazará con la función anterior.

en tu ejemplo de código

<div id="categories">
  <h3>Manufacturers</h3>
    <ul>
      <?php wp_list_categories(); ?>
    </ul>
</div>

Saldría como

 <div id="categories">
      <h3>Manufacturers</h3>
        <ul>
          <li class="cat-item cat-item-7"><a href="http://localhost/crosstrainers/?cat=7">Featured</a></li>
        </ul>
    </div>

Si el título = “”, se ha eliminado por completo … 🙂

créditos para: Tim Holt y su complemento

Esta es una respuesta un poco tardía en una publicación anterior, pero hay una forma mucho más simple que no requiere complementos ni agregar a functions.php:

<?php wp_list_categories('title_li='); ?>

o, si se usa con otras personalizaciones a la salida:

<?php $args = array (
    'title_li'           => __( '' ),
    'hide_empty'         => 0,
    'show_count'         => 1,
    'use_desc_for_title' => 0,
    'child_of'           => 1
);
wp_list_categories( $args ); ?>

Hay un complemento para eso, tal vez esto pueda ayudar al menos a mirar el código del complemento.

http://wordpress.org/extend/plugins/remove-title-attributes/

Esta es probablemente su mejor opción para cualquiera que busque hacer esto sin ningún trabajo functions.php

Simplemente agregue esto a su plantilla.

                <ul class="nav">
                    <?php wp_list_categories( array(
                        'orderby' => 'name',
                        'taxonomy' => 'product_cat',
                        'depth' => 1,
                        'title_li' => '',
                        'hide_title_if_empty' => true,
                        'use_desc_for_title'  => 0,
                        'include' => array( 28, 27, 8, 29, 43, 31 )
                    ) ); ?>
                </ul>

avatar de usuario
greg perham

De forma predeterminada, wp_list_categories incluirá la descripción de la categoría en el atributo del título, si lo hay, o “Ver todas las publicaciones archivadas en categoría” si no hay descripción.

No me gusta tener toda la descripción ahí. Esto es lo que estoy usando en functions.php para personalizar el atributo del título:

function custom_categories_title($output) {
    $search="/title=".+"(.*>)(.+)</i";
    $replace = "title=\"View all articles filed under $2\"$1$2<";
    return preg_replace($search, $replace, $output);
}
add_filter('wp_list_categories', 'custom_categories_title');

Si simplemente quisiera eliminar el atributo de título por completo, podría usar

    $search="/ title=".+"/i";
    $replace="";

¿Ha sido útil esta solución?