Debes tener en cuenta que un post puede estar asignado a varias categorías por lo que puede tener varios padres si buscas en categorías a las que pertenece. Te planteo la solución al problema general considerando mi apunte anterior:
Código PHP:
//En este array almacenaremos los IDs de las categorías padre dado que pueden se más de una
$categorias_padre = array();
//Obtenemos todas las categorías del post actual
$categorias = get_the_category();
if ( $categorias ) {
foreach ( $categorias as $categoria ) {
//Comprobamos que exista una categoría padre
if ( $categoria->category_parent != '0' ) {
//Añadimos el ID de la categoría padre a nuestro array
$categorias_padre[] = $categoria->category_parent;
}
}
}
Esto solo recuperará a los padres que estén un nivel por encima solamente. No recuperaría "abuelos", para ello habría que hacer una función recursiva. Si tu problema es
tan específico que cada post
solo pertenecerá a una única categoría y solamente necesitas el padre de esta prueba con:
Código PHP:
//Obtenemos las categorias a las que pertenece el post
$categorias = get_the_category();
//Obtenemos la categoria a la que pertenece el post
$categoria = get_category( $categorias[0]->term_id; );
//Guardamos la ID de la categoría padre si existe, en caso contrario guardaremos FALSE
$categoria_padre = ( $categoria && $categoria->category_parent != '0' ) ? $categoria->category_parent : false;
Si lo que pretendes es hacer un breadcrumb ( Categoría 1 > Hija > Nieta ) simplemente utiliza esta función:
http://codex.wordpress.org/Function_...tegory_parents
Enlaces de interés:
http://codex.wordpress.org/Function_...e/get_category http://codex.wordpress.org/Function_...t_the_category