Cómo obtener la ruta completa de categoría incluyendo padres y subcategorías

6 jul 2022, 05:34:12
Vistas: 801
Votos: 0

¿Cómo puedo obtener la ruta completa de la categoría incluyendo las subcategorías?

Estoy usando:

if ( is_archive() ) {
    $term = get_queried_object();
    $page_path = $term->slug;  // Obtiene solo el slug de la categoría actual
}

https://mandoemedia.com/blog/topic/aaa-1ndustries/beauty/ esto solo devuelve beauty, no aaa-1ndustries/beauty.

¿Cómo puedo obtener tanto la categoría padre como la subcategoría, es decir aaa-1ndustries/beauty?

El desarrollador anterior añadió código para prefijar las categorías de posts con /blog/topic/.

0
Todas las respuestas a la pregunta 2
1

¿Cómo obtengo la categoría principal y la subcategoría, es decir, aaa-1ndustries/beauty?

Bueno, si te refieres a la URL de la categoría actual, donde se ve como https://example.com/blog/tema/aaa-1ndustries/beauty/, y solo deseas obtener la ruta de categoría mencionada anteriormente de esa URL, entonces prueba esto:

$request   = $GLOBALS['wp']->request;
$page_path = trim( preg_replace( '#^blog/tema/#', '', $request ), '/' );

Y si deseas hacer lo mismo para una URL/enlace permanente de categoría específica, puedes usar get_category_link() (o get_term_link() para taxonomías personalizadas) y parse_url():

$cat_id    = 123; // cambia el valor al ID de categoría correcto
$request   = parse_url( get_category_link( $cat_id ), PHP_URL_PATH );
$page_path = trim( preg_replace( '#^/blog/tema/#', '', $request ), '/' );

Pero si realmente deseas obtener la ruta jerárquica real de la categoría, entonces usa get_category_parents() (o get_term_parents_list() para taxonomías personalizadas). Por ejemplo:

// Usa esto para la taxonomía principal `category`:
$cat_id   = get_queried_object_id(); // o simplemente establece un ID de categoría específico
$cat_path = get_category_parents( $cat_id, false, '/', true );

// O usa esto para taxonomías personalizadas:
$term     = get_queried_object(); // o simplemente establece un objeto de término específico
$cat_path = get_term_parents_list( $term->term_id, $term->taxonomy, array(
    'separator' => '/',
    'link'      => false,
    'format'    => 'slug',
) );

echo trim( $cat_path, '/' ); // trim() elimina la barra diagonal final/última
8 jul 2022 07:19:53
Comentarios

Eres mi héroe de codificación, otra vez Sally

Steve Steve
11 jul 2022 04:26:32
0

Si deseas obtener la ruta completa de la categoría, puedes utilizar get_term_link(). Entonces tu código debería cambiar a:

if ( is_archive() ) {
    $term = get_queried_object();
    $full_path = get_term_link($term);
}
8 jul 2022 14:26:27