• Resuelto inigonz

    (@inigonz)


    Buenas,

    Tengo un problema con un custom post que tiene dos categorías. He estado buscando por internet como solucionar esto, y no he conseguido ninguna respuesta que me sirva, ya que utilizar tags no me sirve por mi estructura.

    Tengo un post con dos categorias, categoria1 y categoria2. Si voy a la pagina de la categoria1, me lista el post, asi mismo ocurre si voy a la pagina de la categoria2 (Utilizo taxonomy-categorias.php) para personalizar las paginas de las categorías para esa taxonomía)

    El problema lo tengo, cuando clico en el post para ver su ficha (single.php) desde cualquiera de las categorías, siempre me dice que pertenece a la categoria2. En mi codigo, obtengo en id del post, y hago un foreach para sacar las categorias padre, siempre me sale primera la categoria1 y segunda la categoria2, por lo tanto siempre me coge la ultima categoria. Veo que esta función no es la que debería utilizar, entonces con que funcion obtengo la current categoría?

    Muchas gracias.

Viendo 15 respuestas - de la 1 a la 15 (de un total de 17)
  • Moderador almendron

    (@almendron)

    Puedes usar get_the_category_list
    https://codex.wordpress.org/Function_Reference/get_the_category_list
    En $parents usa ‘multiple’ para que te muestre todas las categorías a las que pertenece la entrada.
    Por ejemplo:

    <?php echo get_the_category_list( ' / ', 'multiple' ); ?>

    Iniciador del debate inigonz

    (@inigonz)

    Muchas gracias por la respuesta Almendron.

    Las funciones que tengan category, funcionan en la post type por defecto de wp (entradas) o eso creo, para las custom taxnomonies hay que utilizar con term en vez de category (get_the_term_list).

    No era mala opción, he probado, pero me devuelve lo mismo que con mi get_the terms y con el array devuelto, hacer un foreach. Siempre sale primero categoria1 y después categoria2, así que sigue saliendo como que siempre es categoria2.

    Gracias

    Hola!!

    No sé si acabo de entender la situación.

    Tienes 1 post que pertenece a dos categorías, categoria1 y categoria2. Y en single.php se deberían mostrar las dos categorías. ¿Cierto?

    Lo que no me queda claro es si categoria2 es un hija de categoria1 o si son dos categorías de nivel superior.

    Iniciador del debate inigonz

    (@inigonz)

    Buenas,

    Nop, ya veo que no me he explicado bien, porque dos personas vais hacia la misma dirección, sorry.

    Tengo un proyecto que pertenece a la categoría ‘industria’ y a la categoría ‘energía’. Si entro en industria, y pincho en el proyecto, en la ficha del proyecto me tiene que decir que su current categoría es industria, y si pincho desde energía tiene que ser energía.

    El problema es que siempre me dice que su current categoría es industria, pinche desde la categoría que pinche. Utilizo la funcion ‘get_the_terms( $post->ID, ‘categoria_proyectos’ );’

    Moderador almendron

    (@almendron)

    Que yo conozca, no hay ninguna función que haga eso. tendrías que hacerlo de forma manual.
    El proceso sería:
    1.- Estoy en la categoría 1.
    2.- Pincho en su proyecto.
    3.- Tomo la variable «categoría» y la paso al single para que muestre solo esa.
    O dicho de otro modo, se muestra una u otra categoría en función de si he hecho clic en el proyecto estando en una categoría u otra.

    Entonces, resumiendo, lo que necesitas es saber de dónde viene el usuario y mostrar información diferente según la procedencia. ¿Ahora si te he entendido bien?.

    De todas formas, así en principio no me parece muy buena idea, la verdad. Creo que puede hacer más daño a la experiencia del usuario que benefecio. ¿Alguna razón fuerte como para hacer eso?

    La línea marcada por @almendron es una posibilidad.

    Moderador almendron

    (@almendron)

    Coincido con @cybmeta: no tiene ningún sentido lo que planteas. Lo normal sería que aparecieran las dos categorías cuando entras al single del proyecto.

    Iniciador del debate inigonz

    (@inigonz)

    Buenas,

    Disculpad que no haya contestado antes, he estado fuera.
    Almedron, como tomo la variable «categoría», por cookies o por alguna función del wp? ahora solo puedo coger las categorías pero me lista las dos del proyecto.

    La razón por lo que hago esto es por el diseño que tengo, tiene un slider del proyecto, titulo, datos, debajo un botón para ver los proyectos relacionados con ese proyecto(de otras categorías) y debajo los otros proyectos de esa categoría padre.

    Entiendo lo que decís, lo normal hubiese sido crear dos proyectos, pero no es tanto un blog con tags y tal, sino una web coorporativa, home general, home de cada dpto, entrada a mosaico de proyectos de la categoria, y ficha del proyecto,…

    Gracias por las respuestas

    Moderador almendron

    (@almendron)

    La verdad es que no entiendo muy bien cuál es el problema de que te muestre la dos categorías.
    En cualquier caso, no veo la forma de hacer lo que deseas. Se puede excluir una categoría o mostrar solo una en concreto, pero siempre de forma general y no en función de que entrada se trate.
    De todas formas, aquí te dejo las funciones que permiten mostrar las categorías asociadas a una entrada:
    https://developer.wordpress.org/reference/functions/wp_list_categories/ (ver sección «Display Categories Assigned to a Post»)
    https://codex.wordpress.org/Function_Reference/get_the_category_list

    Home

    Iniciador del debate inigonz

    (@inigonz)

    ok, las echo un vistazo. Muchas gracias por la ayuda.
    Se puede hacer con cookies, así sabría en todo momento en que categoría estas, pero no quiero utilizarlas.

    La respuesta a tu pregunta es que cada proyecto solo debería pertenecer a una categoría, esto es un caso extraordinario. Para relacionarse los proyectos entre categorías utilizamos tags, no categorías, no se si me explico.
    Entiendo vuestra idea, la cosa es que no debería haber estos casos extraordinarios

    Muchas gracias por todo

    «lo normal hubiese sido crear dos proyectos» → no, lo normal es que si es UN SOLO proyecto, pues se cree UN SOLO proyecto. Duplicar el proyecto sería, valga la redundancia, contenido duplicado. Malo para el SEO y para la gestión del contenido.

    Y lo normal es que si un mismo proyecto pertenece a dos categorías, se muestre los dos categorías a las que pertenece. No se dónde está el problema.

    Sinceramente, creo que estás ante un problema XY y que tus «necesidades de diseño» no responden a un problema real. Puedes querer hacerlo así, ¿pero que razones tienes aparte de quererlo?

    De todas formas, si quieres puedes implementarlo de varias formas: comprobar el referrer, un query string, cookies, ….

    Por cierto, ¿qué categoría mostrarás a un usuario que visite el proyecto directamente sin venir anteriormente desde una categoría específica?

    Moderador almendron

    (@almendron)

    Esta función también puede ser útil:

    Home

    Iniciador del debate inigonz

    (@inigonz)

    cybmeta tampoco es necesario poner así jajaja, se que tenéis razón, pero cuando uno se empecina con algo….
    Sigo aprendiendo cada día, lógicamente hay mucha gente que sabe muchísimo mas que yo, e intento aprender de ellos y ver su punto de vista en las dudas que me surgen, para comprobar donde cometo el error y poder corregirlo como es en este caso. Ciertamente no había pensado en la ultima pregunta que me haces, de si vas directamente al proyecto….
    Gracias por el comentario, ya veo que tengo que tener los ojos mas abiertos….

    Moderador almendron

    (@almendron)

    No te lo tomes a mal jajajajaja
    Es que has ido a topar con dos cabezudos a los que no les gusta que las cosas se hagan «mal» 🙂

    Iniciador del debate inigonz

    (@inigonz)

    Tranqui no me lo tomo mal, alreves me lo tomo bien porque se que es para ayudar. A mi tampoco me gusta hacer las cosas mal, pero de vez en cuando se me olvida y necesito que me manden por el buen camino como en esta ocasión. Gracias maquinas

Viendo 15 respuestas - de la 1 a la 15 (de un total de 17)
  • El debate ‘Problema con custom pos con dos categorias’ está cerrado a nuevas respuestas.