Contenido

Obtener el ID de la categoría padre

13 Nov

+ 4

Dani, me preguntaba hace unos días como obtener el ID del padre de una categoría si tenemos el ID del hijo, en un principio pensé que con la función get_category_parents() estaría servido, pero no era exactamente lo que estaba buscando.

Únicamente necesitaba una función que te permitiera obtener el ID de la categoría padre y nada más información. Debido al nuevo sistema taxonómico de WordPress 2.3 y superiores, el tema de las categorías está un poco más escondido, pero sigue ahí.

Y echandolé un vistazo al esquema de base de datos, podemos sacar una función rápidamente que no haga este cometido. La función es muy simple y con una select bastante simple podemos obtener un resultado optimo.

function get_parent_id($idHijo) {
  global $wpdb;
  return $wpdb->get_var(sprintf("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = %d", $idHijo));
}
//Modo de uso
echo get_parent_id(2);

Me parece raro que WordPress no tenga ninguna función que haga algo parecido, quizas me la he pasado sin darme cuenta, en cualquier caso, aqui está.

  • Buena, me gustaría una función que encontrase no solo la categoría padre, sino la primera categoría padre, es decir: en caso de que existan más niveles la Id del primer nivel

  • Gracias Anieto, eres un mostro…

    Yo la habia resuelto, pero algo mas complicado:
    function id_cat_padre($idsubcat) {
    global $wpdb;

    $querystr =»
    SELECT wp_term_taxonomy.parent FROM wp_term_taxonomy
    WHERE wp_term_taxonomy.taxonomy=’category’
    AND wp_term_taxonomy.term_id=$idsubcat
    LIMIT 1″;

    $id_hijo = $wpdb->get_results($querystr, OBJECT);

    if ($id_hijo) {
    foreach ($id_hijo as $idhijo) {
    $salida_id_hijo = $idhijo->parent;
    }
    }

    echo $salida_id_hijo;
    }

    Ahora con lo que estoy es tratando de sacar la categoria hijo y mostrar solo esta dentro del loop. Es decir, todos los post siempre van a tener dos categorias, una padre y otra hijo, yo solo quiero mostrar en el index.php (y dentro del loop claro esta) la categoria hijo a la que pertenezca el post…

    Mil gracias

  • Acabo de probarlo..!! funciona a la perfeccion!!! Y como bien dices… debemos acostumbrarnos al nuevo sistema taxonomico del WordPress!!! Ya estuve «metiendome» a las nuevas tablas de la base de datos. Si que han resumido.!!! De nuevo .. Gracias!!!

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.