• Resuelto isabelgalvez

    (@isabelgalvez)


    Hola!
    tengo dos páginas con un header distinto que muestran entradas, al ser el mismo contenido, comparten el archivo de entrada single.php. El problema es que cuando estás en el archivo single.php para ver la entrada, se ve el menú por defecto, y yo quiero que según la página de la que provengas, te ponga un header u otro.

    Los headers los pude personalizar con un plugin, un condicional en php y estilos css.

    Para solucionar esto se me ocurre un condicional en la página single.php. El problema es que necesito saber de qué página vienes a la entrada. Se me ocurre mandar un parámetro según la página en la que estés, que se mande por la url cada vez que pinchas una entrada.

    Es esto viable?
    Alguna otra idea más sencilla?
    En qué página de mis archivos ftp podría encontrar esto?

    Página 1:
    http://www.laramblabarcelona.com/millenials/

    Página 2:
    http://www.laramblabarcelona.com/familias/

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

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

    (@almendron)

    Lo más fácil es un campo personalizado con dos valores (1 y 2 por ejemplo).
    En las entradas pones el valor que corresponda.
    Luego editas la plantilla «single.php» y allí colocas un condicional para que muestre o no muestre lo que te interese.

    Moderador almendron

    (@almendron)

    Para recuperar el valor del campo personalizado puedes usar https://developer.wordpress.org/reference/functions/get_post_meta/

    Iniciador del debate isabelgalvez

    (@isabelgalvez)

    Hola almendron,
    gracias por tu ayuda, en primer lugar.
    O sea, tendría que colocar un campo personalizado con dos valores, eso lo entiendo.
    pero en cuanto a las entradas: las dos páginas ofrecen exactamente las mismas entradas (la gracia de la página web es que cada página tiene su estilo adaptado a diferente público).
    El problema está en que como el archivo single.php de la entrada en particular es el mismo, porque comparten contenido, sólo me deja poner el header por defecto (que es el de una de ellas). Lo que yo quiero es que en el archivo single.php te venga el header de la página en la que tú estabas navegando, puede ser la 1 o puede ser la 2.

    Así que entiendo que los dos valores se los tendría que asignar a los headers?

    Perdona si no he entendido bien tu respuesta, quizás si es la correcta.
    Gracias!!

    Moderador almendron

    (@almendron)

    Y yo creo que te he entendido mal porque lo que necesitas va en función de donde provenga el visitante.
    A ver si es así: dependiendo de si llegan de una u otra página de las que has puesto, la entrada (single) tiene que mostrar una cabecera u otra.
    ¿Es correcto?

    Iniciador del debate isabelgalvez

    (@isabelgalvez)

    exacto, así es!

    Moderador almendron

    (@almendron)

    ¿Qué conocimientos tienes de PHP?

    Iniciador del debate isabelgalvez

    (@isabelgalvez)

    condicionales, bucles, funciones… programación orientada a objetos también algo.. mysql también sé algo..
    puedo investigar, no me importa.

    Moderador almendron

    (@almendron)

    Habría dos métodos:
    1) Pasar una variable. Tendría que preguntar a algún compañero.

    2) A través de un enlace sabría como hacerlo excepto por el hecho de que en una de las páginas los enlaces a las entradas debería tener una forma especial.
    Las entradas: ¿se listan de forma automática o las añades tú de forma manual?

    Moderador almendron

    (@almendron)

    Y una última cuestión: imagina que llegan a una de esas entradas directamente. En estos casos, de nada servirá lo que hagas en esas dos páginas.
    ¿Merece la pena por tanto aplicar la idea de mostrar un header distinto en función de si vienen de una página o de la otra?

    Iniciador del debate isabelgalvez

    (@isabelgalvez)

    En el punto número 2 te refieres a la url que aparece una vez estás en el single.php?
    Las entradas se listan de forma automática, ahí estaba yo perdida también.

    He conseguido hacer que sólo desde una de las páginas se mande un parámetro por la url.
    Es decir, si te metes en http://www.laramblabarcelona.com/millenials/ y haces click en cualquier artículo te viene el nombre de la ruta del artículo y después «?2». Esto lo he conseguido añadiendo este «?2» en el template.php que utiliza esta página, donde indica el enlace al que van los artículos. (no sé si es cutre pero me ha funcionado)

    Ahora entonces creo que podría entonces dirigirme al single.php y decirle algún condicional.

    Pero estoy investigando en ello. Si se te ocurre algo dime;

    Muchas gracias!!!!

    Iniciador del debate isabelgalvez

    (@isabelgalvez)

    En cuanto a llegar a la entrada directamente,
    supongo que según donde te interese meter la entrada (por ejemplo si es para facebook que te interesa que la lea gente joven, pondrás el parámetro adecuado en la url que haga que te salga el menú de «Millenials», que es el adecuado, y no el de «Familias».)
    Esto es lo que se me ocurre ahora mismo, pero es cierto que no me había planteado esa posibilidad, y no sé si es posible lo que digo.

    Si entraran por defecto a la entrada sin pasar por ningún lado, les saldría el menú que hay ahora mismo por defecto supongo, que es el de «Familias».

    Traducido a php, Al condicional del single.php, le puedo decir que si viene el parámetro de «Millenials» me cambie de menú, y si no viene nada, que lo deje como está, a eso me refiero.

    Moderador almendron

    (@almendron)

    Si puedes mandar un parámetro a través de la URL de una de las dos páginas, tendrías que hacer lo siguiente:

    Yo una vez tenía un single donde podías acceder a una versión «limpia» del artículo a través de un enlace. Este enlace tenía un parámetro (en mi caso ?zen). En tu caso, ese parámetro lo has añadido a todas las entradas.

    Luego, en el single.php añadí al principio:

    <?php if(isset($_REQUEST['zen'])) { ?>
    <?php get_template_part( 'con_zen' ); ?>
    <?php } else { ?>
    Resto del single
    <?php } ?>

    Lo que viene a decir este código, es que si aparece el parámetro «zen», entonces carga el template «con_zen». En caso contrario, el single normal.

    Por último creé el archivo «con_zen_php» que era un single en el que cargaba todo lo que me interesaba (cabecera, cuerpo, pie, etc).

    En tu caso, yo probaría lo siguiente:

    <?php if(isset($_REQUEST['zen'])) { ?>
    Carga el menú
    <?php } ?>

    Sustituye «zen» por el parámetro que pongas en la variable.

    • Esta respuesta fue modificada hace 7 años por almendron.
    • Esta respuesta fue modificada hace 7 años por almendron.
    Iniciador del debate isabelgalvez

    (@isabelgalvez)

    Muchas gracias por tu ayuda!!
    Voy a probar y te digo.

    Iniciador del debate isabelgalvez

    (@isabelgalvez)

    Hola almendron,
    lo conseguí,
    en vez de $_REQUEST he puesto $_GET, pero como creo que tengo que usar la variable en más páginas, alomejor hay alguna que me admite mejor $_REQUEST.
    Gracias por tu ayuda,
    Saludos!

    Moderador almendron

    (@almendron)

    De nada. Un saludo.

Viendo 15 respuestas - de la 1 a la 15 (de un total de 15)
  • El debate ‘Headers distintos para la misma entrada’ está cerrado a nuevas respuestas.