Site logo

Archived topic

Display Date Field from ACF

1 reply · Started by Jim on February 24, 2021

Viewing posts 1–2 of 2

I use a custom date field created in Advanced Custom Fields to display an updated date on my pages. I don't like using the modified date because I don't want the on-page date to change every time a fix a typo; I only want the date to change when I explicitly set it.

I'm trying to figure out how to use this date with GP. In my previous theme, I had this working in a custom single template:

<?php if ( get_field( 'date_updated' ) ): 
  echo 'Updated ' . get_field( 'date_updated' );
 else: 
  the_date();
endif; ?> 

How might I adapt this for use in GP?

To further complicate matters, I'm also trying to combine it with these snippets.

This one to display the author before the date:

add_filter( 'generate_header_entry_meta_items', function() {
    return array(
        'author',
        'date',
       
    );
} );

And this one to insert a pipe character between them:

add_filter( 'generate_inside_post_meta_item_output', function( $output, $item ) {
	if ( 'tags' === $item || 'date' === $item ) {
        return ' | ';
    }
    return $output;
}, 50, 2 );

Any suggestions on how to implement all of this most efficiently?

You can use the generate_post_date_output filter for this.

Example:

add_filter( 'generate_post_date_output', function() {
    if( ! is_singular( array('page', 'attachment', 'post') ) ){

        $time_string = '<time class="entry-date published" datetime="%1$s" itemprop="datePublished">%2$s</time> ';

        if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
            $time_string = '<time class="updated" datetime="%3$s" itemprop="dateModified">Updated On %4$s</time> ' . $time_string;
        }

        $time_string = sprintf( $time_string,
            esc_attr( get_the_date( 'c' ) ),
            esc_html( get_the_date('Y') ),
            esc_attr( get_the_modified_date( 'c' ) ),
            get_field( 'date_updated' )
        );

        return sprintf( '<span class="posted-on">%1$s</span>', // WPCS: XSS ok, sanitization ok.
            sprintf( '<a href="%1$s" title="%2$s" rel="bookmark">%3$s</a>',
                esc_url( get_permalink() ),
                esc_attr( get_the_time() ),
                $time_string
            )
        );
    }

});

We basically changed the modified date source from get_the_modified_date() to your custom field.

This archived topic is closed to new replies.