PluginProbe
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder / 51.1.83
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder v51.1.83
51.1.84 51.1.85 51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 All 39 releases
← All changes | includes/widgets/Blog_Posts/Blog_Posts.php +28 -23 51.1.4451.1.83 View file →
@@ -8,8 +8,9 @@
8 8 use Elementor\Group_Control_Box_Shadow;
9 9 use Elementor\Group_Control_Css_Filter;
10 10 use Elementor\Group_Control_Typography;
11 11 use Elementor\Icons_Manager;
12 +use Elementor\Utils;
12 13 use Elementor\Widget_Base;
13 14 use WP_Query;
14 15
15 16 if (!defined('ABSPATH')) {
@@ -2373,9 +2374,9 @@
2373 2374 }
2374 2375
2375 2376 protected function render(): void
2376 2377 {
2377 - $settings = $this->get_settings();
2378 + $settings = Core::displaySettings($this);
2378 2379 $this_ID = $this->get_id();
2379 2380
2380 2381 $query_args = [
2381 2382 'posts_per_page' => $settings['kng_blog_posts_number_of_posts'],
@@ -2414,18 +2415,22 @@
2414 2415 echo '<a href="' . esc_url(get_permalink($post->ID)) . '">';
2415 2416
2416 2417 // CONTAINER 1
2417 2418 if ('yes' !== $settings['kng_blog_posts_cards_image_switcher']) {
2418 - if (has_post_thumbnail($post->ID)) {
2419 - echo '<div class="king-addons-blog-posts-card-container-1">';
2419 + // Without a fallback, a post that has no featured image loses
2420 + // the whole image block and stops lining up with the cards beside it.
2421 + $thumbnail_url = has_post_thumbnail($post->ID)
2422 + ? get_the_post_thumbnail_url($post->ID, $settings['kng_blog_posts_image_size'])
2423 + : Utils::get_placeholder_image_src();
2420 2424
2421 - // image
2422 - echo '<div class="king-addons-blog-posts-image">';
2423 - echo '<img src="' . esc_url(get_the_post_thumbnail_url($post->ID, $settings['kng_blog_posts_image_size'])) . '" alt="' . esc_attr($post->post_title) . '">';
2424 - echo '</div>';
2425 + echo '<div class="king-addons-blog-posts-card-container-1">';
2425 2426
2426 - echo '</div>';
2427 - }
2427 + // image
2428 + echo '<div class="king-addons-blog-posts-image">';
2429 + echo '<img src="' . esc_url($thumbnail_url) . '" alt="' . esc_attr($post->post_title) . '">';
2430 + echo '</div>';
2431 +
2432 + echo '</div>';
2428 2433 }
2429 2434 // END CONTAINER 1
2430 2435
2431 2436 // CONTAINER 2
@@ -2497,29 +2502,29 @@
2497 2502
2498 2503 $js_swiper = "new Swiper('.king-addons-blog-posts-items-" . esc_js($this_ID) . "', {";
2499 2504 $js_swiper .= "direction: 'horizontal',";
2500 2505
2501 - $js_swiper .= "slidesPerView: " . esc_js($settings['kng_blog_posts_desktop_cards_per_view']) . ",";
2502 - $js_swiper .= "spaceBetween: " . esc_js($settings['kng_blog_posts_desktop_space_between_cards']) . ",";
2506 + $js_swiper .= "slidesPerView: " . Core::jsNumber($settings, 'kng_blog_posts_desktop_cards_per_view', 4) . ",";
2507 + $js_swiper .= "spaceBetween: " . Core::jsNumber($settings, 'kng_blog_posts_desktop_space_between_cards', 30) . ",";
2503 2508
2504 2509 // Responsive breakpoints
2505 2510 $js_swiper .= 'breakpoints: {0: {slidesPerView: ' .
2506 - esc_js($settings['kng_blog_posts_mobile_cards_per_view']) . ', spaceBetween: ' .
2507 - esc_js($settings['kng_blog_posts_mobile_space_between_cards']) . '}, ';
2511 + Core::jsNumber($settings, 'kng_blog_posts_mobile_cards_per_view', 1) . ', spaceBetween: ' .
2512 + Core::jsNumber($settings, 'kng_blog_posts_mobile_space_between_cards', 30) . '}, ';
2508 2513 $js_swiper .=
2509 - esc_js(($settings['kng_blog_posts_mobile_breakpoint'] + 1)) . ': {slidesPerView: ' .
2510 - esc_js($settings['kng_blog_posts_tablet_cards_per_view']) . ', spaceBetween: ' .
2511 - esc_js($settings['kng_blog_posts_tablet_space_between_cards']) . '}, ';
2514 + (Core::jsNumber($settings, 'kng_blog_posts_mobile_breakpoint', 767) + 1) . ': {slidesPerView: ' .
2515 + Core::jsNumber($settings, 'kng_blog_posts_tablet_cards_per_view', 3) . ', spaceBetween: ' .
2516 + Core::jsNumber($settings, 'kng_blog_posts_tablet_space_between_cards', 30) . '}, ';
2512 2517 $js_swiper .=
2513 - esc_js(($settings['kng_blog_posts_tablet_breakpoint'] + 1)) . ': {slidesPerView: ' .
2514 - esc_js($settings['kng_blog_posts_desktop_cards_per_view']) . ', spaceBetween: ' .
2515 - esc_js($settings['kng_blog_posts_desktop_space_between_cards']) . '}},';
2518 + (Core::jsNumber($settings, 'kng_blog_posts_tablet_breakpoint', 1024) + 1) . ': {slidesPerView: ' .
2519 + Core::jsNumber($settings, 'kng_blog_posts_desktop_cards_per_view', 4) . ', spaceBetween: ' .
2520 + Core::jsNumber($settings, 'kng_blog_posts_desktop_space_between_cards', 30) . '}},';
2516 2521
2517 2522 // Scrolling speed
2518 2523 if ('yes' !== $settings['kng_blog_posts_autoplay_like_ticker_switcher']) {
2519 - $js_swiper .= "speed: " . esc_js($settings['kng_blog_posts_scrolling_speed']) . ",";
2524 + $js_swiper .= "speed: " . Core::jsNumber($settings, 'kng_blog_posts_scrolling_speed', 600) . ",";
2520 2525 } else {
2521 - $js_swiper .= "speed: " . esc_js($settings['kng_blog_posts_autoplay_like_ticker_autoplay_speed']) . ",";
2526 + $js_swiper .= "speed: " . Core::jsNumber($settings, 'kng_blog_posts_autoplay_like_ticker_autoplay_speed', 6000) . ",";
2522 2527 }
2523 2528
2524 2529 // Pagination
2525 2530 if ('yes' === $settings['kng_blog_posts_pag_switcher']) {
@@ -2527,9 +2532,9 @@
2527 2532 esc_js($this_ID) . "', " .
2528 2533 ('yes' === $settings['kng_blog_posts_pag_clickable_switcher'] ? 'clickable: true, ' : '');
2529 2534 if ('yes' === $settings['kng_blog_posts_pag_dynamic_switcher']) {
2530 2535 $js_swiper .= 'dynamicBullets: true, ';
2531 - $js_swiper .= 'dynamicMainBullets: ' . esc_js($settings['kng_blog_posts_pag_dynamic_number'] . ', ');
2536 + $js_swiper .= 'dynamicMainBullets: ' . Core::jsNumber($settings, 'kng_blog_posts_pag_dynamic_number', 1) . ', ';
2532 2537 }
2533 2538 $js_swiper .= "type: '" . esc_js($settings['kng_blog_posts_pag_type']) . "'},";
2534 2539 }
2535 2540
@@ -2553,9 +2558,9 @@
2553 2558 // Autoplay
2554 2559 if ('yes' === $settings['kng_blog_posts_autoplay_switcher']) {
2555 2560 $js_swiper .= "autoplay: {";
2556 2561 if ('yes' !== $settings['kng_blog_posts_autoplay_like_ticker_switcher']) {
2557 - $js_swiper .= "delay: " . esc_js($settings['kng_blog_posts_autoplay_delay']) . ",";
2562 + $js_swiper .= "delay: " . Core::jsNumber($settings, 'kng_blog_posts_autoplay_delay', 2000) . ",";
2558 2563 } else {
2559 2564 $js_swiper .= "delay: 0,";
2560 2565 }
2561 2566 $js_swiper .= "disableOnInteraction: " . ('yes' === $settings['kng_blog_posts_autoplay_disableoninteraction_switcher'] ? 'true' : 'false') . ",";