• ¡Hola!

    Por temas de SEO, he decidido ocultar la fecha de mis posts, excepto en los que sean de hace 60 días o menos y los que se hayan modificado en ese tiempo.

    En este post se explica exactamente lo que quiero hacer: http://miposicionamientoweb.es/como-eliminar-la-fecha-de-publicacion-en-wordpress/ (Quitarla sólo de los artículos más antiguos, versión actualizada abajo del todo de esa sección).

    El tema está en que he localizado mi código pero no se parece mucho al que se muestra en ese artículo, y no quiero cargarme nada (aunque obviamente he hecho backup).

    Este es mi código:

    /**
    * Prints HTML with meta information for the current post-date/time and author.
    */
    function thim_posted_on() {
    $time_string = ‘<time class=»entry-date published updated» datetime=»%1$s»>%2$s</time>’;
    if ( get_the_time( ‘U’ ) !== get_the_modified_time( ‘U’ ) ) {
    $time_string = ‘<time class=»entry-date published» datetime=»%1$s»>%2$s</time><time class=»updated» datetime=»%3$s»>%4$s</time>’;
    }

    $time_string = sprintf( $time_string, esc_attr( get_the_date( ‘c’ ) ), esc_html( get_the_date() ), esc_attr( get_the_modified_date( ‘c’ ) ), esc_html( get_the_modified_date() )
    );

    $posted_on = sprintf(
    _x( ‘Publicado el %s’, ‘post date’, ‘cakeart’ ), ‘‘ . esc_html( $time_string ) . ‘
    );

    $byline = sprintf(
    _x( ‘por %s’, ‘post author’, ‘cakeart’ ), ‘<span class=»author vcard»>‘ . esc_html( get_the_author() ) . ‘</span>’
    );

    echo ‘<span class=»posted-on»>’ . $posted_on . ‘</span><span class=»byline»> ‘ . $byline . ‘</span>’;
    }

    endif;

    if ( !function_exists( ‘thim_recipe_post_on’ ) ) :
    /**
    * Prints HTML with meta information for the current post-date/time and author
    */
    function thim_recipe_posted_on() {
    $time_string = ‘<time class=»entry-date published updated» datetime=»%1$s»>%2$s</time>’;
    if ( get_the_time( ‘U’ ) !== get_the_modified_time( ‘U’ ) ) {
    $time_string = ‘<time class=»entry-date published» datetime=»%1$s»>%2$s</time>’;
    }

    $time_string = sprintf( $time_string, esc_attr( get_the_date( ‘c’ ) ), esc_html( get_the_date() ), esc_attr( get_the_modified_date( ‘c’ ) ), esc_html( get_the_modified_date() )
    );

    $posted_on = sprintf(
    _x( ‘Publicado el %s’, ‘recipe date’, ‘cakeart’ ), $time_string
    );

    $byline = sprintf(
    _x( ‘Por %s’, ‘recipe author’, ‘cakeart’ ), ‘<span class=»author vcard»>‘ . esc_html( get_the_author() ) . ‘</span>’
    );

    ¿Alguna idea de cómo puedo hacerlo?

    Muchísimas gracias de antemano!

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

    (@almendron)

    ¿Has probado a usar un plugin? Si funciona, tal vez sea una mejor opción:
    https://wordpress.org/plugins/wp-old-post-date-remover/

    Y si no te funciona, entonces vemos lo de tocar el código.

    • Esta respuesta fue modificada hace 7 años, 3 meses por almendron.
    Iniciador del debate dulcesdiabeticos

    (@dulcesdiabeticos)

    Vi que existía la opción del plugin, pero tengo ya muchos y todo lo que me pueda arreglar con código prefiero hacerlo así, porque al final un plugin de aquí y otro de allá y cargamos la web 🙁

    Moderador almendron

    (@almendron)

    En cuanto tenga un rato, te lo miro.

    Iniciador del debate dulcesdiabeticos

    (@dulcesdiabeticos)

    Genial, muchísimas gracias por la ayuda 🙂

    Moderador almendron

    (@almendron)

    Lo he mirado y tenemos un pequeño problema: tu plantilla es de pago y no tengo acceso a ella. No puedo por tanto hacer pruebas y el código que has puesto no ayuda mucho porque hay que ver de qué fichero se trata y a qué afecta.
    Si tienes conocimientos de PHP, sería más sencillo porque en realidad es poner un condicional. Ejemplo:

    <?php 
    $change_date = strtotime('-60 days');
    $post_date = strtotime(get_the_date('m/d/Y'));
    if($post_date > $change_date) :
    aquí iría el código del tema que hace que aparezca la fecha
    endif; ?>

    Podrías ser así:

    $change_date = strtotime('-60 days');
    $post_date = strtotime(get_the_date('m/d/Y'));
    if($post_date > $change_date) :
    	echo '<span class="posted-on">' . $posted_on . '</span><span class="byline"> ' . $byline . '</span>';
    	else :
    	echo '</span><span class="byline"> ' . $byline . '</span>';
    endif; ?>

    Creo que es en «posted-on» donde almacena la fecha pero no me atrevo a asegurarlo.

    • Esta respuesta fue modificada hace 7 años, 3 meses por almendron.
    Iniciador del debate dulcesdiabeticos

    (@dulcesdiabeticos)

    Yo también creo que es en posted_on, porque cuando inspeccionas el código en cualquier post es lo que aparece (ejemplo http://dulcesdiabeticos.com/tarta-limon-sin-azucar/).

    Aquí está el fichero en cuestión completo, por si ayuda: https://drive.google.com/file/d/0B8rg9TBTk00NYnVlOVZwalpJLUE/view?usp=sharing

    Intentaré meterle el condicional a ver si funciona, aunque el código actual ya tiene un par de condicionales y no sé muy bien dónde ubicar las líneas de código nuevas (?).

    Muchas gracias por la ayuda!

    Moderador almendron

    (@almendron)

    Simplemente sustituye echo '<span class="posted-on">' . $posted_on . '</span><span class="byline"> ' . $byline . '</span>'; por lo que yo te he puesto.`

    Nota: no me he fijado pero comprueba que no utiliza la variable $post_date. Si es así, en el código que yo te he puesto la sustituyes por $post_fecha

    Iniciador del debate dulcesdiabeticos

    (@dulcesdiabeticos)

    He cambiado el código y se me ha roto la web 🙁

    He tenido que revertir cagando leches… algo habré hecho mal.

    Moderador almendron

    (@almendron)

    Es que sobraba un carácter en el código que te he pasado 🙁
    Sobra «?>»
    Total que sustituye
    echo '<span class="posted-on">' . $posted_on . '</span><span class="byline"> ' . $byline . '</span>';
    por

    $change_date = strtotime('-60 days');
    $post_date = strtotime(get_the_date('m/d/Y'));
    if($post_date > $change_date) :
    	echo '<span class="posted-on">' . $posted_on . '</span><span class="byline"> ' . $byline . '</span>';
    	else :
    	echo '</span><span class="byline"> ' . $byline . '</span>';
    endif;
    Iniciador del debate dulcesdiabeticos

    (@dulcesdiabeticos)

    ¡Hola!

    Este código no ha roto la web, pero tampoco funciona 🙁

    Este post por ejemplo es de agosto y sigue mostrando la fecha: http://dulcesdiabeticos.com/bizcocho-frutos-rojos-sin-azucar/

    Seguiré mirando a ver.

    Muchas gracias!

    Moderador almendron

    (@almendron)

    Prueba con lo siguiente:

    $change_date = strtotime('-60 days');
    echo ' [Fecha limite: ' . $change_date . '] ';
    $post_date = strtotime(get_the_date('m/d/Y'));
    echo ' [Fecha entrada: ' . $post_date . '] ';
    if($post_date > $change_date) :
    	echo '<span class="posted-on">' . $posted_on . '</span><span class="byline"> ' . $byline . '</span>';
    	echo ' [Publicar fecha SI] ';
    	else :
    	echo '</span><span class="byline"> ' . $byline . '</span>';
    	echo ' [Publicar fecha NO] ';
    endif;

    Y luego revisa el blog a ver si aparece en algún sitio la frase «Publicar fecha SI» o «Publicar fecha NO». Y también veremos los valores que toman las fechas.

    No te olvides de vaciar el cache del navegador y si usas un plugin para ello, también éste.

    Iniciador del debate dulcesdiabeticos

    (@dulcesdiabeticos)

    No aparecen en ningún sitio, he borrado caché de todas partes y nada.

    Moderador LGrusin

    (@lgrusin)

    Igual no es ese el archivo que tienes que modificar.

    Para los posts se utiliza el archivo single.php. Podrías mirar qué hay en él.

    Un saludo

    Moderador almendron

    (@almendron)

    Pues entonces, y como dice @lgrusin, es muy probable que ese no sea el archivo a modificar. Como ya te dije, sin poder acceder a la plantilla es muy complicado acertar. Tendrás que ir probando.

    Iniciador del debate dulcesdiabeticos

    (@dulcesdiabeticos)

    Miré el archivo single, single-post, index, content… todos los que lleva el tema y el único donde encontré algo relacionado con la fecha (con la función que se ve al inspeccionar elemento y eso) era ése. Seguiré mirando a ver si encuentro otra cosa.

    ¡Gracias!

Viendo 15 respuestas - de la 1 a la 15 (de un total de 15)
  • El debate ‘Eliminar fecha de publicación en posts’ está cerrado a nuevas respuestas.