Soporte » Guías – Resolución de problemas » Usar entrada como categoría. Referencias cruzadas.

  • Hola, ¿cómo están? Estoy necesitando crear un sitio para administrar clubes y ligas. El problema es que creo que sólo con categorías de entradas no puedo lograr lo que necesito.

    Tengo por un lado las categorías principales que son: Noticias, Ligas, Clubes y Escudos.

    Ligas -> Provincia A –> Asociación A —> Liga A —–> Club A
    | | | |—-> Club B
    | | | |—-> Club C
    | | | |—-> Club…
    | | —> Liga B —–> Club A (pertence a dos ligas)
    | | | |—-> Club D
    | | | |—-> Club E
    | | | |—-> Club…
    | | —> Liga…
    | |
    | –> Asociación B —> Liga C —–> Club F
    | | |—-> Club…
    | |
    | –> Asociación…
    |
    -> Provincia B –> Asociación A —> Liga D —–> Club G
    | | | |—-> Club H
    | | | |—-> Club I
    | | | |—-> Club…
    | | —> Liga E —–> Club J
    | | | |—-> Club K
    | | | |—-> Club L
    | | | |—-> Club…
    | | —> Liga…
    | |
    | –> Asociación B —> Liga F —–> Club M
    | | |—-> Club…
    | |
    | –> Asociación…
    -> Provincia…

    Una liga puede estar afiliada a una o varias asociaciones. Cuando ingreso a la liga tengo que poder ver a qué asociación pertenece y que clubes pertenecen a esa liga. El problema es que las ligas tienen que ser entradas porque de por si tienen datos e imágenes, pero deberían trabajar como categorías de los clubes.

    Un club puede estar afiliado a una o varias ligas. Cuando ingreso al club tengo que poder ver a qué ligas pertenece.

    Cada club posee su escudo, tengo que poder listar los escudos y ver a que club pertenecen, pudiendo hacer click e ir al club.

    Creo que el mayor problema se me presenta en que las ligas de por sí tienen que ser entradas al poseer información propia.

    ¿Hay alguna forma de resolverlo desde las categorías, con código o con algún plugin?

    A título informativo, con las noticias no hay demasiado problema, aunque si pudiera resolver lo anterior también podría filtrar si alguna liga o club está incluido en dicha noticia, aunque ésto realmente es lo que menos me preocupa, con que las noticias vayan separadas por provincia ya es suficiente, y eso ya lo hice con categorías:

    Noticias -> Provincia A
    |
    -> Provincia B
    |
    -> Provincia…

    Desde ya agradezco a quien pueda darme una mano.

    • Este debate fue modificado hace 1 semana, 4 días por Leonardo.

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 8 respuestas - de la 1 a la 8 (de un total de 8)
  • Yo lo que haría sería crear diferentes Custom Post Types para ligas, asociaciones y clubes. Luego podrías enlazarlos mediante campos personalizados.

    La situación aquí sería saber cómo hacer la estructura de las URLS

    Espero haberte ayudado, Saludos

    Iniciador del debate Leonardo

    (@lbc75)

    Muchas gracias por tu respuesta Alvaro.

    Estoy intentando ir por ese lado, pero me está costando. Creé dos Custom Post Types con ACF (Advanced Custom Fields) «Ligas» y «Clubes», un grupo de campos con Custom Post Type UI para ciertos datos adicionales de las ligas y otro de tipo Relación para los clubes, éste último es que me interesa. Funciona, puedo seleccionar una liga de «Ligas» y asignarla al club que estoy creando o editando, pero cuando quiero mostrarla tengo un error.

    Éste es el código insertado en single.php que utilizo para mostrar, de hecho, la primer parte que utilizo para las ligas, funciona correctamente:

    <?php if (in_category('ligas')) { ?>
    <br>
    <div>
    <ul>
    <li><strong>Dirección:</strong> <?php the_field('domicilio'); ?></li>
    <li><strong>Teléfono:</strong> <?php the_field('telefono'); ?></li>
    <li><strong>Fundación:</strong> <?php the_field('fundacion'); ?></li>
    <li><strong>Sitio Web:</strong> <?php the_field('sitio_web'); ?></li>
    <li><strong>Email:</strong> <?php the_field('email'); ?></li>
    </ul>
    </div>
    <?php } elseif (in_category('clubes1')) { ?>
    <br>
    <div>
    <ul>
    <li><strong>Liga:</strong> <?php the_field('entradas_relacionadas'); ?></li>
    </ul>
    </div>

    Y éste el error que recibo:

    Ha habido un error crítico en esta web.

    Éste es el club de prueba:

    https://contextodigital.com.ar/futbolinterior/clubes/club-test/

    Nuevamente gracias por tu ayuda.

    • Esta respuesta fue modificada hace 4 días, 11 horas por Leonardo.

    Hola @lbc75,

    Creo que deberías añadir la siguiente línea después del cierre del último div:
    <?php } ?>

    Saludos

    • Esta respuesta fue modificada hace 3 días, 23 horas por Alvaro Torres.
    Iniciador del debate Leonardo

    (@lbc75)

    Perdón, tenía una nota etiquetada en el medio y me comí una porción de código:

    <?php if (in_category('ligas')) { ?>
    <br>
    <div>
    <ul>
    <li><strong>Dirección:</strong> <?php the_field('domicilio'); ?></li>
    <li><strong>Teléfono:</strong> <?php the_field('telefono'); ?></li>
    <li><strong>Fundación:</strong> <?php the_field('fundacion'); ?></li>
    <li><strong>Sitio Web:</strong> <?php the_field('sitio_web'); ?></li>
    <li><strong>Email:</strong> <?php the_field('email'); ?></li>
    </ul>
    </div>
    <?php } elseif (in_category('clubes1')) { ?>
    <br>
    <div>
    <ul>
    <li><strong>Liga:</strong> <?php the_field('entradas_relacionadas'); ?></li>
    </ul>
    </div>
    <?php } elseif (in_category('noticias')) { ?>
    <br>
    <div>
    </div>
    <?php } else { ?>
    <?php } ?>
    • Esta respuesta fue modificada hace 3 días, 23 horas por Leonardo.
    • Esta respuesta fue modificada hace 3 días, 23 horas por Leonardo.

    Hola @lbc75,

    Prueba a colocar el id como segundo parámetro en the_field. Algo así:

    <?php $id = get_the_ID(); ?>
    <li><strong>Dirección:</strong> <?php the_field('domicilio', $id); ?></li>

    Espero haberte ayudado, Saludos

    Iniciador del debate Leonardo

    (@lbc75)

    Muchas gracias por tu ayuda Alvaro. Si utilizo esta opción sigue devolviendo el mismo error:

    <?php $id = get_the_ID(); ?>
    <li><strong>Liga:</strong> <?php the_field('entradas_relacionadas', $id); ?></li>

    Y con ésta no devuelve resultados:

    <?php $id = get_the_ID(); ?>
    <li><strong>Liga:</strong> <?php the_field($id); ?></li>
    Iniciador del debate Leonardo

    (@lbc75)

    Alvaro, acabo de descubrir el problema:

    En ACF el formato de retorno debe ser «ID de Publicación» en lugar de «Objeto de Publicación».

    Ahora bien, justamente lo que me retorna son los IDs (de las ligas en el club), pero es un paso, al menos no es un error. Debería poder mostrar el título de la liga y convertirlo en un vínculo. Con eso tendría resuelto el problema.

    ¡Gracias!

    Hola @lbc75 ,

    Me alegro que hayas encontrado la solución. Para lo que buscas podrías echarle un ojo a esta función:
    https://developer.wordpress.org/reference/functions/get_cat_name/

    Espero haberte ayudado, Saludos

Viendo 8 respuestas - de la 1 a la 8 (de un total de 8)
  • Debes estar registrado para responder a este debate.