¿Lamentas que WordPress no tenga una característica para publicar una entrada durante solamente 2 días, o una semana? Aquí tienes un código que puedes utilizar en tu tema de WordPress, para poder crear un post que expire en una fecha y hora determinadas. Estos son los pasos a seguir:
1. Editar el tema
Edita tu tema y substituye el Loop actual de WordPress por este loop hackeado:
<?php
if (have_posts()) :
while (have_posts()) : the_post(); ?>
$expirationtime = get_post_custom_values('expiration');
if (is_array($expirationtime)) {
$expirestring = implode($expirationtime);
}
$secondsbetween = strtotime($expirestring)-time();
if ( $secondsbetween > 0 ) {
// For exemple...
the_title();
the_excerpt();
}
endwhile;
endif;
?>
2. Crear un campo personalizado
Ahora ya solo necesitas crear un campo personalizado para que el post expire en una fecha/hora determinadas. Escribe expiration como nombre y la fecha/hora (formato: mm/dd/yyyy 00:00:00) como valor.
La entrada no se mostrará después de ese momento. ¡Experimenta y disfruta!
Original: WpRecipes.com
Etiquetas: Campo personalizado, Fecha y hora



15 comentarios
25/01/2009
Hola!!
Muy bueno, aun no se cuando usarlo pero en un futuro me puede servir.
Saludos
26/01/2009
Hola 23r9i0. Supongo que no es algo muy usual ni necesario en blogs normales, pero alguna gente que usa WordPress como CMS me preguntó a veces, por eso al verlo en WpRecipes, me pareció interesante publicarlo en español. Es la típica cosa rara que a veces necesitamos.
27/01/2009
Hola! Es la primera vez que visito este blog (no lo conocía) y tengo que decir que me ha encantado. Por cierto, gracias por el hack de expiración de los posts, lo pondré en práctica.
Un saludo ;)
27/01/2009
Bienvenido Iván, me alegra que te sirva el hack y me alegra aún más que te haya gustado el blog :D
20/02/2009
Gracias, gracias, graciaaaas!!!
17/07/2009
Angeles… una pregunta:
El codigo que posteaste para cambiar el loop.
¿En cual de las archivos del tema debe cambiarse?
Encontré en más de un archivo .PHP la mención a
if (have_posts)
Gracias!!!
17/07/2009
Hola Vaikava, en el archivo que quieras, si quieres que desaparezca de la página de inicio en index.php.
Existen otras formas de hacerlo, y también un plugin para esto: http://wordpress.org/extend/plugins/post-expirator/
Si no te aclaras pásate por el foro. Saludos.
17/07/2009
Angeles!!!
Muchas gracias por tu respuesta!!!!
El plugin que me referenciaste me ha funcionado perfecto.
El unico detalle es que independiente de mi zona horaria y formato de hora, el plugin funciona con referncia a otra hora y el expirador de post queda seteado con -3hrs que la que le indico.
Un detalle menor.
Gracias!!!
12/03/2010
El código que muestras presenta un pequeño error, posee un cierre “?>” en la tercera linea.
el cual debe removerse para no tener problemas.
Bueno, espero que su blog siga creciendo, un Saludo
01/12/2010
Los posts tienen tres estados: publicado, pendiente de moderación y borrador. Pregunto, ¿habrá forma de que exista un cuarto nivel para enviar los posts antiguos a un lugar aparte pero que se puedan ver?
25/12/2010
@German: ¿Aparte de donde?
25/08/2011
Creo que lo que German busca es que psado un tiempo x el post pase a estado “caducado” y deje de ser visible en el frontend, igual que si se pusiera manualmente en estado “borrador” pero con otro nombre poara que sea identificable.
Para tener mas estados hay un plugin llamado flow edit, pero aun no sé como hacer para que el estado cambie automaticamente pasado un tiempo.
09/11/2011
Me ha caido de perlas mil gracias amigos!!
15/12/2011
Si, pero si mi “loop” contiene mas cosas importantes e imprescindibles para mi, no voy a sustituir el código de mi “loop” por estas líneas, me cargaría todo.
¿Cómo se puede hacer que las entradas expiren y dejen de verse solo en la categoría “INICIO” y la categoría “NOTICIAS”, y que a la vez sigan existiendo en otras categorías a modo de “histórico”?
15/12/2011
¿Podéis explicar en que consiste lo de crear un campo?, ¿dónde?, ¿cómo?
Deja tu comentario