Foros del Web » Programando para Internet » PHP »

¿Como hacer lo de wordpress? (<!--more-->)

Estas en el tema de ¿Como hacer lo de wordpress? (<!--more-->) en el foro de PHP en Foros del Web. Todos estareis al caso, que WP tiene una funcion, que es que cuando pones <!--more--> en tu entrada, en la pagina donde se muestran las ...
  #1 (permalink)  
Antiguo 09/01/2010, 17:38
Avatar de sumarioweb  
Fecha de Ingreso: diciembre-2009
Mensajes: 19
Antigüedad: 14 años, 4 meses
Puntos: 0
Pregunta ¿Como hacer lo de wordpress? (<!--more-->)

Todos estareis al caso, que WP tiene una funcion, que es que cuando pones <!--more--> en tu entrada, en la pagina donde se muestran las ultimas entradas (index.php) te crea un link que es Leer el resto de la entrada.

Me gustaria hacer eso, habria que crear una funcion que hiciera un substr al poner una palabra especifica, la idea la tengo.

La verdad es que se poquito de PHP pero me llevo bastante.

Me gustaria si me dijerais como poder conseguirlo.

Gracias ;) y si necesitáis mas detalle lo doy :S es que aveces soy malo explicando D:
  #2 (permalink)  
Antiguo 09/01/2010, 17:42
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
Respuesta: ¿Como hacer lo de wordpress? (<!--more-->)

Es simple!
Primero almacenas todo el texto completo en una variable como siempre
Luego obtenes la posicion de la etiqueta de quiebre
Y luego seleccionas el texto desde el primer caracter hasta la posicion de la etiqueta de quiebre (<!--more-->
Código PHP:
Ver original
  1. $texto = 'Las noticias de hoy son las siguientes
  2. <!--more-->
  3. Noticia 1
  4. Noticia 2
  5. Noticia 3';
  6.  
  7. $pos = strpos($texto, '<!--more-->');
  8.  
  9. $nuevo_texto = substr($texto, 0, $pos);

SAludos
  #3 (permalink)  
Antiguo 09/01/2010, 18:04
Avatar de sumarioweb  
Fecha de Ingreso: diciembre-2009
Mensajes: 19
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: ¿Como hacer lo de wordpress? (<!--more-->)

Muchisimas gracias!!!
Ahora necesito que al poner <!--mas--> salga Leer el resto del articulo
Probe haciendo un str_replace:

echo str_replace("<!--mas-->", "<a href=leer.php?id=".$not['id'].">Leer el resto del articulo</a>", $nuevo_texto);
  #4 (permalink)  
Antiguo 09/01/2010, 18:09
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
Respuesta: ¿Como hacer lo de wordpress? (<!--more-->)

Para eso.. cambia:
Código PHP:
Ver original
  1. #
  2. $nuevo_texto = substr($texto, 0, $pos);
por:
Código PHP:
Ver original
  1. #
  2. $nuevo_texto = substr($texto, 0, $pos) . "<a href=leer.php?id=".$not['id'].">Leer el resto del articulo</a>";
__________________
Half Music - www.halfmusic.com
  #5 (permalink)  
Antiguo 09/01/2010, 18:14
Avatar de sumarioweb  
Fecha de Ingreso: diciembre-2009
Mensajes: 19
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: ¿Como hacer lo de wordpress? (<!--more-->)

Bueno, aqui van surgiendo los problemas. Muchisimas gracias! pato12, pero lo que pasa es que yo tengo:
Código PHP:
Ver original
  1. $pos = strpos($not['noticia'], '<!--mas-->');
  2. $nuevo_texto = substr($not['noticia'], 0, $pos)."<a href=leer.php?ID=".$not['ID'].">Leer el resto del articulo</a>";
  3. echo bbcode(nl2br(htmlspecialchars($nuevo_texto)))."<br /><br />";

y el htmlspecialchars() hace que el link en vez de mostrarse Leer el resto del articulo, se muestra <a href=leer.php?ID=".$not['ID'].">Leer el resto del articulo</a> desde el navegador

Última edición por sumarioweb; 09/01/2010 a las 20:34
  #6 (permalink)  
Antiguo 09/01/2010, 20:34
Avatar de sumarioweb  
Fecha de Ingreso: diciembre-2009
Mensajes: 19
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: ¿Como hacer lo de wordpress? (<!--more-->)

Vale, ahora tengo otro pequeño problema!
Lo que me pasa ahora es que si al crear una entrada no pongo el <!--more-->, no se me ve el contenido de la entrada y aunque no este el <!--more--> no me sale "Leer el resto del articulo"

El codigo de ahora es:
Código PHP:
Ver original
  1. $pos = strpos($not['noticia'], '<!--mas-->');
  2. $noticia = substr(htmlspecialchars($not['noticia']), 0, $pos)."<a href=leer.php?ID=".$not['ID'].">Leer el resto del articulo</a>";
  3. echo bbcode(nl2br($noticia))."<br /><br />";

PD: Arreglado!

Última edición por sumarioweb; 09/01/2010 a las 22:16

Etiquetas: wordpress
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 21:57.