function cruzamundos_newsletter_posts( $atts ) { $atts = shortcode_atts( array( 'number' => 15, 'days' => 7, ), $atts, 'noptin_recent_7_days' ); $number = max( 1, intval( $atts['number'] ) ); $days = max( 0, intval( $atts['days'] ) ); $date_limit = date( 'Y-m-d H:i:s', strtotime( '-' . $days . ' days' ) ); $opportunities_id = get_cat_ID( 'Oportunidades' ); $output = ''; $count = 0; /* * RESPONSIVE CSS */ $output .= ' '; /* * FUNCTION TO RENDER EACH POST */ $render_post = function() use ( &$output ) { if ( ! has_post_thumbnail() ) { return false; } $post_id = get_the_ID(); $title = get_the_title(); $permalink = get_permalink(); $excerpt = get_the_excerpt(); $thumbnail_url = get_the_post_thumbnail_url( $post_id, 'medium' ); /* * PORTUGUESE DATE */ $timestamp = get_post_timestamp( $post_id ); $formatter = new IntlDateFormatter( 'pt_PT', IntlDateFormatter::FULL, IntlDateFormatter::NONE, wp_timezone(), IntlDateFormatter::GREGORIAN, "EEEE, d 'de' MMMM" ); $post_date = ucfirst( $formatter->format( $timestamp ) ); /* * CATEGORY */ $categories = get_the_category(); $category_name = ''; if ( ! empty( $categories ) ) { $category_name = esc_html( $categories[0]->name ); } /* * POST HTML */ $output .= '
'; return true; }; /* * FIRST: NORMAL POSTS */ $query_normal = new WP_Query( array( 'posts_per_page' => $number, 'date_query' => array( array( 'after' => $date_limit, 'inclusive' => true, ), ), 'post_status' => 'publish', 'category__not_in' => $opportunities_id > 0 ? array( $opportunities_id ) : array(), 'orderby' => 'date', 'order' => 'DESC', ) ); while ( $query_normal->have_posts() && $count < $number ) { $query_normal->the_post(); if ( $render_post() ) { $count++; } } wp_reset_postdata(); /* * VISUAL SEPARATOR */ if ( $count > 0 && $opportunities_id > 0 ) { $output .= ''; } /* * SECOND: OPORTUNIDADES */ $remaining = $number - $count; if ( $remaining > 0 && $opportunities_id > 0 ) { $query_opportunities = new WP_Query( array( 'posts_per_page' => $remaining, 'date_query' => array( array( 'after' => $date_limit, 'inclusive' => true, ), ), 'post_status' => 'publish', 'cat' => $opportunities_id, 'orderby' => 'date', 'order' => 'DESC', ) ); while ( $query_opportunities->have_posts() && $count < $number ) { $query_opportunities->the_post(); if ( $render_post() ) { $count++; } } wp_reset_postdata(); } /* * EMPTY RESULT */ if ( $count === 0 ) { return 'Sem posts recentes para mostrar.
'; } return $output; } add_shortcode( 'noptin_recent_7_days', 'cruzamundos_newsletter_posts' );