add this to your functions.php
the shortcode is [get_last_posts] is it anywhere you want, even with builders…
you can change the post type
post per page or add more properties check this source for more parameters: WP_Query | Class | WordPress Developer Resources
function get_the_last_posts( ) { $qquery = new WP_Query(array( 'post_type' => 'news', 'posts_per_page' => 8 )); echo '<div class="carousel-wrap"> <div class="owl-carousel">'; while ($qquery->have_posts()){ $qquery->the_post(); ?> <div class="item"> <div> <a href="<?php echo get_the_permalink(); ?>"><?php echo get_the_post_thumbnail( get_the_ID(), 'size-1220x730' ); ?></a> </div> <div class="sslider-category"> <?php foreach ( get_the_terms( get_the_ID(), 'news-category' ) as $tax ) { echo $tax->name; } ?> </div> <div class="sslider-title"> <?php echo get_the_title(); ?> </div> <div class="sslider-desc"> <?php echo get_the_excerpt(); ?> </div> <div class="sslider-link"> <a href="<?php echo get_the_permalink(); ?>">JETZT LESEN</a> </div> </div> <?php } echo ' </div></div>'; wp_reset_postdata(); } add_shortcode( 'get_last_posts', 'get_the_last_posts');
if it is used with elementor this is the CSS need to be added to the parent container
selector{ position:relative; } selector .item{ background:white; } selector .sslider-category{ font-family: "Inter", Sans-serif; font-size: 16px; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; color:#fd4539; padding: 20px 20px 0 20px; } selector .sslider-title{ color: #122856; font-family: "Inter", Sans-serif; font-size: 28px; font-weight: 900; line-height: 38px; letter-spacing: 1px; padding:20px; } selector .sslider-desc{ color: #122856; font-family: "Inter", Sans-serif; font-size: 18px; font-weight: 500; line-height: 30px; letter-spacing: 1px; padding: 0 20px 0 20px; min-height:185px; } selector .sslider-link{ font-family: "Inter", Sans-serif; font-size: 16px; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; color:#fd4539; padding: 20px ; text-align:right; } selector .sslider-link:hover{ color: #122856; } selector .sslider-link::after{ content: "\f061"; font-family: "Font Awesome 5 Free"; font-weight: 900; } selector .owl-prev{ position:absolute; left:40px; top:40%; } selector .owl-prev i{ color:white; background: #122856; padding:20px; border-radius: 100px; } selector .owl-prev i:before { content: "\f060"; } selector .owl-next{ position:absolute; right:40px; top:40%; } selector .owl-next i{ color:white; background: #122856; padding:20px; border-radius: 100px; } selector .owl-next i:before { content: "\f061"; }
here is the owl script to run the slider typical default owl setup really.
<script> jQuery('.owl-carousel').owlCarousel({ loop: true, stagePadding: 200, margin: 40, nav: true, navText: [ "<i class='fa fa-caret-left'></i>", "<i class='fa fa-caret-right'></i>" ], autoplay: true, autoplayHoverPause: true, responsive: { 0: { items: 1, stagePadding: 0 }, 600: { items: 2, stagePadding: 0 }, 1100: { items: 3, stagePadding: 0 }, 1600: { items: 3 } } }) </script>