Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Dar formato a texto devuelto en una función PHP

Estas en el tema de Dar formato a texto devuelto en una función PHP en el foro de WordPress en Foros del Web. Hola a todos, antes que nada agradecer vuestro tiempo en leer el post y espero que álguien pueda ayudar. Os quiero comentar una pequeño problema ...
  #1 (permalink)  
Antiguo 02/12/2010, 20:54
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años, 8 meses
Puntos: 0
Busqueda Dar formato a texto devuelto en una función PHP

Hola a todos, antes que nada agradecer vuestro tiempo en leer el post y espero que álguien pueda ayudar.

Os quiero comentar una pequeño problema que tengo con los títulos de los post de mi web basada en WordPress, os ubico en la cuestión:

- Los títulos de cada post se guardan en un campo único de la base de datos, y se muestra en la web con el formato indicado en una clase del CSS.
- Dichos títulos en mi web contienen el autor y el nombre de una canción.
- Quiero que el autor tenga un formato de texto determinado y el autor otro diferente.


Cita:
EJEMPLO:

[ACTUALMENTE] Autor – Canción (Formato1)
[CAMBIO DESEADO] Autor (Formato 1) "Autor" (Formato 2)
Hay algunas soluciones al problema:

- Plasmar en la base de datos dos campos: "Autor" y "Cancion", de modo que podría mostrarlos en los títulos cada una con su clase CSS deseada. (La descarto ya que tendría que realizar muchos cambios estructurales en la web y ahora ya es demasiado tarde).

- Instertar el código para dar formato al texto directamente dentro de cada entrada del título del post. (Aunque funcione en principio la descarto por que crea errores en diferentes widgets y plugins que al mostrar dicho título muestran todo el código, creando de esta manera fallos).

- Por último es la solución que busco pero que no se como traducirla en código. Para que sea más sencillo de explicar os copio el código que hace referencia a la función que retorna el título del post:


Código PHP:
<h2 class="single-post-title">
<a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
</h2>

La función que retorna el título es: <?php the_title(); ?>

La idea sería poder dar el formato deseado al título que retorna esa función (por ejemplo: Autor "Cancion"). El texto tendría un formato determinado hasta leer el primer carácter de comillas ("), a partir de este se añadiría "<br><font color="#">" antes de continuar, luego se mostaría el resto del texto y para finalizar se cerraría la etiqueta "</font>".

Espero que haya quedado claro y que álguien pueda ayudarme, gracias a todos! ;)
  #2 (permalink)  
Antiguo 05/12/2010, 14:20
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Dar formato a texto devuelto en una función PHP

Nadie me echa un cable? :(
  #3 (permalink)  
Antiguo 05/12/2010, 14:53
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Dar formato a texto devuelto en una función PHP

Porque no te creas una funcion(supongo que iria en un plugin o algo asi) custom_the_title para parsear el titulo? algo asi:

Código PHP:
Ver original
  1. function custom_the_title($separator = '-', $before = '', $after = '', $echo = true)
  2. {
  3.     $title = explode($separator, the_title($before, $after, $echo)); //asumiendo que separas por "-"
  4.     return  '<span class="author">'  . $title[0] . '</span>' .
  5.             '<span class="song">' . $title[1] . '</span>';
  6. }

Salu2.
  #4 (permalink)  
Antiguo 05/12/2010, 22:25
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 2 meses
Puntos: 41
Tema movido desde PHP a Wordpress
  #5 (permalink)  
Antiguo 06/12/2010, 07:42
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 8 meses
Puntos: 656
Respuesta: Dar formato a texto devuelto en una función PHP

Si ya tenés la info subida puede ser tedioso pasarla, pero lo que yo hubiera hecho es utilizar un custom field para completar los datos del título, al quedar separados es mucho mas facil luego jugar con los respectivos formatos. No es viable para vos?
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #6 (permalink)  
Antiguo 07/12/2010, 02:16
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
Respuesta: Dar formato a texto devuelto en una función PHP

Lo que comenta Nekko es la mejor opción en el caso expuesto.

masterpuppet, el explode también podría ser buen método, pero ten en cuenta que el filtro del RSS también debe ser configurado o saldrá el título tal cual. En cuanto a tu función veo algunos errores, deberías revisarla.
  #7 (permalink)  
Antiguo 07/12/2010, 08:09
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: Dar formato a texto devuelto en una función PHP

otro tip:
si realmente necesitas cambiar el titulo, te recomiendo que lo hagas directamente en el base de datos, puede ser algo tedioso pero con comandos de base de datos puede buscar de fila en fila y por columna, un campo, le tomas datos hasta el primero "-" y entonces obtienes el titulo, agregas o modificas lo que necesitas y vuelves a guardar, luego pasas al siguiente y repite el proceso.
Todo eso se puede hacer desde conultas SQL (yo lo se hacer con el motor de oracle pero no tengo idea en mysql porque es un tanto diferente)
Lo que yo digo es un metodo masivo y directamente sobre la base de datos, si eres nuevo, evita mi consejo y reside por lo lo que dicen los demas.
pero por base de datos, con un par de consultas automaticas... solucionas todo (pero insisto, trata de dejar esta alternativa en ultimo lugar por las dudas)
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #8 (permalink)  
Antiguo 07/12/2010, 10:37
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Dar formato a texto devuelto en una función PHP

Gracias por la ayuda, he leído las opciones que planteáis:

- La función PHP "custom_the_title" podría ser una buena solución, la probaré en el código para ver si da buen resultado.

- El tema de Custom Fields también parecía buena solución ya que he visto como funcionan, aunque veo que es necesario indicar el nombre de cada campo, es decir, por poner un ejemplo aparecería: "Autor: Nombre del autor". Y sólo quiero que salga el nombre del autor y no es posible dejar el título del campo en blanco.

- Realizarlo en la misma base de datos no lo contemplo, ya que el problema es que no puedo insertar dicho código en lso campos de títuño de la base de datos, ya que crea errores en diferentes plugins, wodgets y RSS. En la base de datos debe guardarse así, pero al mostrarse en la web quiero darle un fomarto diferente.

Gracias a todos por vuestro tiempo, si álguien se le ocurre alguna solución alternativa agradecería su ayuda. De momento intentaré implementar la función de masterpuppet a ver si hay suerte, ya os cuento, un saludo.
  #9 (permalink)  
Antiguo 07/12/2010, 11:09
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: Dar formato a texto devuelto en una función PHP

Cita:
Iniciado por dropthebass Ver Mensaje

- El tema de Custom Fields también parecía buena solución ya que he visto como funcionan, aunque veo que es necesario indicar el nombre de cada campo, es decir, por poner un ejemplo aparecería: "Autor: Nombre del autor". Y sólo quiero que salga el nombre del autor y no es posible dejar el título del campo en blanco.
no te creas, puede obtener solamente el "nombre del autor" sin que diga "autor" y lo digo por experiencia propia.
mira lee este post, donde realice una investigación (y con ayuda) pude solucionar mi problema de las metaetiquetas y lo estoy usando muy bien, tal vez te sirva de algo.

salu2
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #10 (permalink)  
Antiguo 09/12/2010, 23:25
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Dar formato a texto devuelto en una función PHP

Pleter he visto lo que me has enlazado y he podido comprobar que si se pueden sacar las Custom Fields sin el nombre del campo, aunque realizando diferentes pruebas al utilizarlo como título me ha dado diferentes problemas en el formato de la web que me han hecho desistir.

Finalmente la solución que mejor resultado me ha dado ha sido una versión de la función que me habían comentado antes. Lo que he hecho es ir al archivo post-template.php (wp-includes) donde se declara la funcion "the_title" que es la que muesta el código y realizar estas modificaciones:

Código PHP:
function the_title($before ''$after ''$echo true) {
    
$title get_the_title();

    if ( 
strlen($title) == )
        return;

    
$title $before $title $after;

    if ( 
$echo )
    {
        
        
$caracter='|'
                   
$titulo explode($caracter$title); 
        
$autor $titulo[0];    
        
$cancion $titulo[1];
        
        echo  
$autor."<br><font color='grey'>\"".$cancion." \"</font>";
        
    
    }
    else
        return 
$title;

De esta forma conseguía el resultado deseado...PERO como veis utilizo el carácter "|" (que no me gusta nada), ya que no me funcionaba ni con comillas, ni con el guión y con otros carácteres me salían símbolos raros.

De todos modos surgían nuevos problemas en otros plugins que parece que utilizan lo que retorna dicha funcion y se inserta código donde no debería haberlo. Finalmente no compensa tanto problema para realmente lo que era, así que después de intentarlo y casi conseguirlo voy a mantener el formato inicial.

Gracias a los que me habéis ayudado, espero que le sirva esto a álguien en el futuro
  #11 (permalink)  
Antiguo 13/12/2010, 07:03
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: Dar formato a texto devuelto en una función PHP

tal vez no te funcionaba porque ponias directamente el simbolo en vez de el "nombre html" que posee (creeria que puede ser eso, intenta a ver si te sirve, depende de la codificación de tu sitio)
hecha una mirada aca para mas opciones
http://www.ascii.cl/es/codigos-html.htm

p.s.: &divide; jeje no recordaba eso en html... me haz hecho revivir viejos tiempos
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #12 (permalink)  
Antiguo 15/12/2010, 21:07
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Dar formato a texto devuelto en una función PHP

Pleter toda la razón, no recordaba esos valores, utilizándolos si que los lee. Aunque al realizarme la separación me devuelve esto:

Cita:
Autor
";Titulo"
Se cuela el caracter "punto y coma" en la segunda parte de $titulo, utilizo la misma función que podéis ver arriba... de momento no se por que...
  #13 (permalink)  
Antiguo 16/12/2010, 08:54
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: Dar formato a texto devuelto en una función PHP

mmmm... trata de quitar el ; final del caracter html a ver si es eso... otra cosa mmm..

podria ser algun script que moleste y haga que se modifique el resultado y te queda de esa forma... mmm..

ahora si me dejaste pensando
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #14 (permalink)  
Antiguo 16/12/2010, 10:21
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Dar formato a texto devuelto en una función PHP

En realidad no lleva el punto y coma en el valor, todavía no he tenido tiempo de investigarlo a fondo, pero tampoco se me ocurre nada...dejo el código actual, gracias.

Código PHP:
function the_title($before ''$after ''$echo true) { 
    
$title get_the_title(); 

    if ( 
strlen($title) == 
        return; 

    
$title $before $title $after

    if ( 
$echo 
    { 
         
        
$caracter='&#8211';  
        
$titulo explode($caracter$title);  
        
$autor =$titulo[0];  
        
$cancion =$titulo[1];
         
        echo  
$autor."<br><font color='grey'>\"".$cancion." \"</font>"

     
    } 
    else 
        return 
$title

  #15 (permalink)  
Antiguo 16/12/2010, 12:31
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: Dar formato a texto devuelto en una función PHP

no me cierra la idea de esta parte

Código PHP:
echo  $autor."<br><font color='grey'>\"".$cancion." \"</font>"
No hay una comilla doble de mas? ( " )
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #16 (permalink)  
Antiguo 16/12/2010, 13:03
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Dar formato a texto devuelto en una función PHP

Creo que está bien así, a parte de las comillas necesarias he añadido otras con "\"" para que contengan el título. He probado a quitarlo y sigue colándose el punto y coma.

De todos modos he optado por eliminar el carácter de la variable y ahora ya funciona al 100%, se ha quedado así:

Código PHP:
function the_title($before ''$after ''$echo true) { 
    
$title get_the_title(); 

    if ( 
strlen($title) == 
        return; 

    
$title $before $title $after

    if ( 
$echo 
    { 

        
$caracter='&#8211';  
        
$titulo=explode($caracter$title);  
        
$autor=$titulo[0]; 
        
$cancion=$titulo[1]; 
        
        
$cancion str_replace(';'''$cancion);  

                 
        echo  
$autor."<br><font color='grey'>\"".$cancion." \"</font>"

     
    } 
    else 
        return 
$title

Ahora sólo me queda solucionar algunso problemas que da con algunos plugins e includes y podré hacerlo funcionar, MUCHAS GRACIAS POR EL INTERÉS Y AYUDA! ;)
  #17 (permalink)  
Antiguo 16/12/2010, 13:08
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: Dar formato a texto devuelto en una función PHP

muchas de nada.

salu2 =)
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #18 (permalink)  
Antiguo 16/12/2010, 20:08
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Dar formato a texto devuelto en una función PHP

Si álguien tiene curiosidad de ver de lo que se trataba en la web, podéis visitarla en: www.lastmusic.es . Un saludo! ;)
  #19 (permalink)  
Antiguo 17/12/2010, 06:57
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: Dar formato a texto devuelto en una función PHP

eeey! que buena pagina! me encanto!! me compartes el theme si es gratuito? me lo imagino con otro color, una estructura mas simple de post y un header un poquito mas chico para hacer la pagina de mi opensource :D
si es de pago.. me dices donde lo compraste?
la verdad que la pagina me gusto, la verdad que si.
y ya que estas, publicala aqui asi te dan ideas y opiniones http://www.forosdelweb.com/f1/
(respeta el formato de publicacion lo unico)
salu2
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #20 (permalink)  
Antiguo 17/12/2010, 07:03
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: Dar formato a texto devuelto en una función PHP

lo encontre http://www.alivethemes.com/deepblue/
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #21 (permalink)  
Antiguo 17/12/2010, 09:51
Avatar de dropthebass  
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Dar formato a texto devuelto en una función PHP

Sí que es el Deep Blue, si lo has encontrado rápido :)

La verdad que está muy bien el theme, estube mirando muchos y este es el que más me llamó la atención, le he hecho algunos cambios de diseño y estrucura poco a poco para adecuarlo a mi gusto y a la funcionalidad de la web. Y todavía quedan cosas por hacer, en verdad la web tiene un mes de vida y quiero trabajar más en ella, ahora que ya voy conociendo mejor los archivos de Wordpress, que todavía no lo había utilizado hasta ahora, aunque si había probado otros CMS como PHP Fusion.

El theme es gratuito pero tienes algunas funcionalidades deshabilitadas como puedes ver en la web o si te lo instalas en local. Tiene un precio bastante bajo si quieres desbloquearlo, además que te dan soporte en su foro. De todos modos, yaque me has ayudado puedo mandarte el código desbloqueado por privado si te interesa, un saludo! ;)

Etiquetas: dar, formato, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:06.