| @@ -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') . ","; |