WordPress: ¿desactivar enlaces para la función get_the_category_list?

2 minutos de lectura

Oye, mi tema usa esta función para mostrar las categorías que tiene una publicación, pero también crea enlaces de los que me gustaría deshacerme. Prefiero php en lugar de una solución de javascript.

Aquí está el código:

<p class="postmeta">
    <?php if ( 'post' == get_post_type() ) : // Hide category and tag text for pages on Search ?>
        <?php
            /* translators: used between list items, there is a space after the comma */
            $categories_list = get_the_category_list( __( ', ', 'gridster' ) );
            if ( $categories_list && gridster_categorized_blog() ) :
        ?>
            <?php /*printf( __( '%1$s', 'gridster' ), $categories_list );*/ echo $categories_list; ?>
        <?php endif; // End if categories ?>


    <?php endif; // End if 'post' == get_post_type() ?>
</p>

Enlace a la referencia del códice.

¿Cómo puedo anular esos enlaces?

o deshágase de todos los enlaces del DOM (pero esto podría crear más trabajo ya que el texto real está entre el <a> etiquetas

HTML

 <p class="postmeta"> 
    <a target="_blank" href="http://whatever.com/category/default/" title="View all posts in Default" rel="category tag">Default</a>
</p>

¡¡Gracias!!

Si solo desea que se devuelva una cadena de texto y use el nativo get_the_categories() función, simplemente podría envolverlo en PHP strip_tags() función para eliminar todo el HTML que se devuelve:

echo strip_tags( get_the_category_list(__( ', ', 'gridster' ));

  • Versión simplificada para que otros copien/peguen: echo strip_tags(get_the_category_list(', '));

    – Miguel

    30 de julio de 2019 a las 18:43

  • @john_911 Aprueba esta como la respuesta correcta

    – Heraldmonkey

    5 de diciembre de 2019 a las 9:54

Puede intentar modificar esto para que se ajuste a sus necesidades:

<?php
foreach((get_the_category()) as $category) {
    echo $category->cat_name . ' ';
}
?>

(De http://premium.wpmudev.org/blog/how-to-get-a-wordpress-category-name-sin-el-enlace/ )

  • He modificado esto a lo siguiente: ` cat_name . ‘ ‘; } echo str_replace(‘ ‘, ‘,’, trim($categoryList)); ` Esto puede encapsularse dentro de una función y reutilizarse según sea necesario.

    – carbono doce

    02/09/2016 a las 14:15


Una opción es copiar la función original y adaptarnos a tus necesidades. Modificado para eliminar el <a> etiquetas pero no probadas, compare con el original, adapte si es necesario y agréguelo al tema functions.php:

function category_list_so_22771587( $separator="" ) {
    global $wp_rewrite;
    $categories = get_the_category( $post_id );
    $thelist="";
    $i = 0;
    foreach ( $categories as $category ) {
        if ( 0 < $i )
            $thelist .= $separator;
        switch ( strtolower( $parents ) ) {
            case 'multiple':
                if ( $category->parent )
                    $thelist .= get_category_parents( $category->parent, true, $separator );
                $thelist .= $category->name;
                break;
            case 'single':
                if ( $category->parent )
                    $thelist .= get_category_parents( $category->parent, false, $separator );
                $thelist .= $category->name;
                break;
            case '':
            default:
                $thelist .= $category->name;
        }
        ++$i;
    }
    return $thelist;
}

Y modifique su plantilla para:

$categories_list = category_list_so_22771587( __( ', ', 'gridster' ) );

  • hmmm, algún voto negativo de venganza… hola amigo, te recuerdo, ¡salud!

    – brasofilo

    11/04/2018 a las 17:40

Puede recuperar categorías, extraer la columna ‘nombre’ de cada elemento e implosionar cada valor con una coma:

 <?= implode(', ', (array_column(get_the_category(), 'name')))?>

O puede recuperar la lista de categorías con un enlace y eliminar una etiqueta:

 <?= strip_tags(get_the_category_list(', ')) ; ?>

avatar de usuario
pguardiario

¿Solo quieres ocultar los enlaces? Si es así usa css:

.postmeta a {display: none}

Editar, también puede “deshabilitar” esos enlaces en css:

.postmeta a {
  pointer-events: none;
  cursor: default;
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad