I was trying to add an image like a "new" image to the posts which are just published and are less than 2 days old.
I tried using a function like this within a WP_Query but it is applying to all posts.
add_action('the_title', 'insiderable_add_img_new');
function insiderable_add_img_new($title) {
$title = '<img src="https://example.com/icon.gif">'.$title;
return $title;
}
This is what I tried with WP_Query:
$events_query = new WP_Query(array('post_type'=>'post', 'post_status'=>'publish', 'posts_per_page'=>-1));
if($events_query->have_posts()) :
while($events_query->have_posts()) :
$events_query->the_post();
if (get_the_date( 'Y-m-d' ) === date( 'Y-m-d' )) {
add_filter('the_title', 'insiderable_add_img_new');
}
endwhile; else: endif;
wp_reset_postdata();
function insiderable_add_img_new($title) {
$title = '<img src="https://example.com/icon.gif">'.$title;
return $title;
}
This code snippet checks for all posts and if the date matches today, it modifies the $title.
I am looking for a more efficient code, please suggest if you have one.
Place this snippet in the functions.php at the bottom:
// Working Model
add_filter( 'the_title', 'ag_custom_post_title_link' );
function ag_custom_post_title_link( $title ) {
$postdate = get_the_date( 'Y-m-d' );
$nows = date( 'Y-m-d' );
if ( $postdate == $nows) {
$title = '<img src="https://example.com/img.gif">'.$title;
}
return $title;
}
You can also edit it to apply: if the post is less than 2 days old or something like that.
I think that helps someone :)