Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

¿Cómo obtener una subcategoría de una categoría padre específica?

Estas en el tema de ¿Cómo obtener una subcategoría de una categoría padre específica? en el foro de WordPress en Foros del Web. Hola, amigos, Dios los Bendiga. Les explico rápidamente mi situación. Estoy creando un mini sistema de control de proyectos en Wordpress, al principio traté de ...
  #1 (permalink)  
Antiguo 28/11/2013, 10:51
Avatar de apoh07  
Fecha de Ingreso: mayo-2011
Mensajes: 31
Antigüedad: 13 años, 6 meses
Puntos: 2
Pregunta ¿Cómo obtener una subcategoría de una categoría padre específica?

Hola, amigos, Dios los Bendiga.

Les explico rápidamente mi situación. Estoy creando un mini sistema de control de proyectos en Wordpress, al principio traté de hacerlo con plugins dedicados a eso, pero ninguno cubría todo lo que necesito. Así que decidí mejor manejar la mayoría de la información de los proyectos con categorías y subcategorías, de paso de esta manera puedo filtrar todo desde un menú.

Ahora, supongamos que tengo la siguiente estructura:

Categoría - Chef (ID 3)
Subcategorías Chef - Juan Manes, Pedro Lobos, Óscar Leal

Categoría - Tipo de evento (ID 4)
Subcategorías Tipo de evento - Clase, Muestra, Boda, Banquete

El tema sobre el que estoy trabajando, BlogoLife, tiene un archivo content.php que se encarga del loop del post, así que lo que he estado haciendo es modificarlo para que en todos los posts, con sólo poner las subcategorías y llenar unos custom fields, automáticamente se ponga la información en el cuerpo del mensaje. Pero el problema es que no consigo llamar al nombre de la subcategoría de determinada categoría a la que pertence el post en cuestión.

Para explicarlo mejor, con el ejemplo de subcategorías que puse antes, digamos que, en un post con las subcategorías Pedro Lobos y Boda, quiero que en el cuerpo del mensaje se ponga automáticamente:

Chef: Pedro Lobos
Tipo de evento: Boda

Para esto he probado con este código:
Código PHP:
echo ('<strong>Chef</strong>: '); foreach((get_categories('child_of=3')) as $category
{  echo 
$category->cat_name '';  }
echo (
'</br><strong>Tipo de evento</strong>: '); foreach((get_categories('child_of=2')) as $category
{  echo 
$category->cat_name '';  } 
En un principio esto aparentemente funcionaba, pero al ir cargando más posts me di cuenta de que en realidad muestra los nombres de todas las subcategorías que contengan al menos un post.

Y bueno, esa es mi situación, espero haberme explicado lo suficientemente bien.

De antemano les agradezco enormemente por su tiempo y ayuda.

¡Saludos y Bendiciones!
  #2 (permalink)  
Antiguo 28/11/2013, 11:39
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 11 años
Puntos: 49
Respuesta: ¿Cómo obtener una subcategoría de una categoría padre específica?

Podrías utilizar custom fields para mostrar esta información y ahorrarte el dolor de cabeza. También usar custom taxonomies sería interesante. Pero si quieres que todo funcione a través del sistema de categorías pues vamos a echarte una mano:

Código PHP:
$categorias            get_the_category();
$categorias_formateadas    = array();

foreach( 
$categorias as $categoria ) {
    
    switch ( 
$categoria->category_parent ) {                        
        case 
3:
            
$categorias_formateadas['chef']    = $categoria->cat_name;
            break;
        case 
2:
            
$categorias_formateadas['evento']    = $categoria->cat_name;
            break;
        default:
            
$categorias_formateadas['otras']    = ( isset( $categorias_formateadas['otras'] ) ) ? $categorias_formateadas['otras'] . ', ' $categoria->cat_name $categoria->cat_name;
            break;
    }
    
}

if ( isset( 
$categorias_formateadas['chef'] ) ) {

    echo 
'</br><strong>Tipo de evento</strong>: ' $categorias_formateadas['chef'];
    
}

if ( isset( 
$categorias_formateadas['evento'] ) ) {

    echo 
'</br><strong>Tipo de evento</strong>: ' $categorias_formateadas['evento'];
    
}

echo 
'</br><strong>Otras Categorías:</strong> ' $categorias_formateadas['otras']; 
No lo he probado, pero en teoría debería funcionar. Solo adáptalo a tus necesidades.

Documentación sobre get_the_category: http://codex.wordpress.org/Function_Reference/get_the_category
Taxonomías: http://codex.wordpress.org/Taxonomies
  #3 (permalink)  
Antiguo 28/11/2013, 11:54
Avatar de apoh07  
Fecha de Ingreso: mayo-2011
Mensajes: 31
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: ¿Cómo obtener una subcategoría de una categoría padre específica?

Cita:
Iniciado por AlejandroGalvez Ver Mensaje
Podrías utilizar custom fields para mostrar esta información y ahorrarte el dolor de cabeza. También usar custom taxonomies sería interesante. Pero si quieres que todo funcione a través del sistema de categorías pues vamos a echarte una mano:

Código PHP:
$categorias            get_the_category();
$categorias_formateadas    = array();

foreach( 
$categorias as $categoria ) {
    
    switch ( 
$categoria->category_parent ) {                        
        case 
3:
            
$categorias_formateadas['chef']    = $categoria->cat_name;
            break;
        case 
2:
            
$categorias_formateadas['evento']    = $categoria->cat_name;
            break;
        default:
            
$categorias_formateadas['otras']    = ( isset( $categorias_formateadas['otras'] ) ) ? $categorias_formateadas['otras'] . ', ' $categoria->cat_name $categoria->cat_name;
            break;
    }
    
}

if ( isset( 
$categorias_formateadas['chef'] ) ) {

    echo 
'</br><strong>Tipo de evento</strong>: ' $categorias_formateadas['chef'];
    
}

if ( isset( 
$categorias_formateadas['evento'] ) ) {

    echo 
'</br><strong>Tipo de evento</strong>: ' $categorias_formateadas['evento'];
    
}

echo 
'</br><strong>Otras Categorías:</strong> ' $categorias_formateadas['otras']; 
No lo he probado, pero en teoría debería funcionar. Solo adáptalo a tus necesidades.

Documentación sobre get_the_category: http://codex.wordpress.org/Function_Reference/get_the_category
Taxonomías: http://codex.wordpress.org/Taxonomies
Se ve prometedor, amigo, lo probaré y te digo!

Una duda, el número que se pone después de "case" es el ID de la categoría padre de la que quiero obtener la subcategoría a la que pertenece el post?
  #4 (permalink)  
Antiguo 28/11/2013, 11:57
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 11 años
Puntos: 49
Respuesta: ¿Cómo obtener una subcategoría de una categoría padre específica?

Efectivamente, es el ID, perdona por no comentar el código, ¡se me olvidó! Modifico mi primer comentario para dejarlo más claro.

PD: No me deja el foro editar el mensaje ahora, asi que cualquier duda pregúntala y la respondo.
  #5 (permalink)  
Antiguo 28/11/2013, 12:42
Avatar de apoh07  
Fecha de Ingreso: mayo-2011
Mensajes: 31
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: ¿Cómo obtener una subcategoría de una categoría padre específica?

Cita:
Iniciado por AlejandroGalvez Ver Mensaje
Efectivamente, es el ID, perdona por no comentar el código, ¡se me olvidó! Modifico mi primer comentario para dejarlo más claro.

PD: No me deja el foro editar el mensaje ahora, asi que cualquier duda pregúntala y la respondo.
Muchas gracias, Alejandro!

Te cuento que primero lo modifiqué para una categoría real y probé en una línea, lo cual me funcionó de maravilla; pero cuando lo completé para poner todas las categorías padres reales me marcó este error:

Parse error: syntax error, unexpected '3' (T_LNUMBER), expecting case (T_CASE) or default (T_DEFAULT) or '}' in .../content.php on line 25

Me podrías ayudar?
  #6 (permalink)  
Antiguo 28/11/2013, 12:47
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 11 años
Puntos: 49
Respuesta: ¿Cómo obtener una subcategoría de una categoría padre específica?

¿Puedes pegar el código que estás probando y que arroja ese error?

El error parece que es debido a que has eliminado "case" donde pone "case 3:".
  #7 (permalink)  
Antiguo 28/11/2013, 12:55
Avatar de apoh07  
Fecha de Ingreso: mayo-2011
Mensajes: 31
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: ¿Cómo obtener una subcategoría de una categoría padre específica?

Cita:
Iniciado por AlejandroGalvez Ver Mensaje
¿Puedes pegar el código que estás probando y que arroja ese error?

El error parece que es debido a que has eliminado "case" donde pone "case 3:".
Este es el código completo que he añadido en content.php, recuerda que uso custom fields para 3 datos:

Código PHP:
$categorias            get_the_category();
$categorias_formateadas    = array();

foreach( 
$categorias as $categoria ) {
    
    switch ( 
$categoria->category_parent ) {                        3
        
case 3:
            
$categorias_formateadas['diseñador']    = $categoria->cat_name;
            break;
        case 
33:
            
$categorias_formateadas['estado']    = $categoria->cat_name;
            break;
        case 
2:
            
$categorias_formateadas['coordinador']    = $categoria->cat_name;
            break;
        case 
32:
            
$categorias_formateadas['etapa']    = $categoria->cat_name;
            break;
        case 
44:
            
$categorias_formateadas['imagen']    = $categoria->cat_name;
            break;
        case 
45:
            
$categorias_formateadas['posicionamiento']    = $categoria->cat_name;
            break;
        case 
4:
            
$categorias_formateadas['servicio']    = $categoria->cat_name;
            break;
        default:
            
$categorias_formateadas['otras']    = ( isset( $categorias_formateadas['otras'] ) ) ? $categorias_formateadas['otras'] . ', ' $categoria->cat_name $categoria->cat_name;
            break;
    }
    
}


$nombre get_the_title();
$info_prt get_post_meta$post->ID'info_prt'true ); 
foreach( 
$info_prt as $info_prt){
    echo (
'<strong>Nombre del proyecto</strong>: '); echo $nombre;
    echo (
'</br><strong>Número del proyecto</strong>: '); echo $info_prt['numero-del-proyecto'];
    if ( isset( 
$categorias_formateadas['servicio'] ) ) {

    echo 
'</br><strong>Tipo de proyecto</strong>: ' $categorias_formateadas['servicio'];
    
}
    echo (
'</br><strong>Fecha de inicio</strong>: '); echo $info_prt['fecha-de-inicio'];
    if ( isset( 
$categorias_formateadas['coordinador'] ) ) {

    echo 
'</br><strong>Coordinador</strong>: ' $categorias_formateadas['coordinador'];
    
}
    if ( isset( 
$categorias_formateadas['diseñador'] ) ) {

    echo 
'</br><strong>Diseñador</strong>: ' $categorias_formateadas['diseñador'];
    
}
    echo (
'</br><strong>Nota del diseñador</strong>: '); echo $info_prt['nota-del-disenador'];
    if ( isset( 
$categorias_formateadas['imagen'] ) ) {

    echo 
'</br><strong>Imagen Coorporativa</strong>: ' $categorias_formateadas['imagen'];
    
}
    if ( isset( 
$categorias_formateadas['posicionamiento'] ) ) {

    echo 
'</br><strong>Posicionamiento</strong>: ' $categorias_formateadas['posicionamiento'];
    
}
    echo (
'</br><strong>Link de MG</strong>: '); echo $info_prt['link-de-mg'];
    if ( isset( 
$categorias_formateadas['etapa'] ) ) {

    echo 
'</br><strong>Etapa</strong>: ' $categorias_formateadas['etapa'];
    
}
    if ( isset( 
$categorias_formateadas['estado'] ) ) {

    echo 
'</br><strong>Estado</strong>: ' $categorias_formateadas['estado'];
    
}

  #8 (permalink)  
Antiguo 28/11/2013, 12:58
Avatar de apoh07  
Fecha de Ingreso: mayo-2011
Mensajes: 31
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: ¿Cómo obtener una subcategoría de una categoría padre específica?

Mátenme, qué error más tonto!
  #9 (permalink)  
Antiguo 28/11/2013, 13:17
Avatar de apoh07  
Fecha de Ingreso: mayo-2011
Mensajes: 31
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: ¿Cómo obtener una subcategoría de una categoría padre específica?

Un trillón de gracias, Alejandro!!! En verdad me sacaste de un apuro que tenía desde el Domingo! Eres un genio!

Si te interesa trabajar como diseñador freelance, agrégame al face (...com/apoh07) y, cuando haya una vacante, te consigo una entrevista.
  #10 (permalink)  
Antiguo 28/11/2013, 13:17
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 11 años
Puntos: 49
Respuesta: ¿Cómo obtener una subcategoría de una categoría padre específica?

Veo que ya te has dado cuenta tú solo. Ese 3 flotando al lado del switch ... Tranquilo, son cosas que suelen pasar. La pregunta ahora es, ¿funciona ya todo en orden?

Saludos.

EDIT: Acabo de leer tu último mensaje. Gracias por la oferta pero ahora mismo estoy hasta arriba con mis propios proyectos empresariales y va para largo, aunque intento sacar tiempo para ayudar en lo que pueda por estos foros.

Etiquetas: blog, padre, plugin, post, tema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:14.