Elementor breaks site with custom shortcode
-
I created a custom shortcode which includes a special loop which includes all posts from different multisite blogs. This solution is provided by this plugin: https://rudrastyh.com/. The shortcode is perfectly working an all normal pages and posts.
But I am also using the page builder Elementor. When inserting this shortcode into Elementor some strage things are happening: in editor mode the shortcode output is showing up twice, once at the top of the editor area and once again at the place where I actually put the shortcode. When I hit save, my whole site breaks and shows a standard image when accesing any page. Then the the only solution is to recover my latest database backup.
Here my shortcode fuction:
// Add Shortcode function all_events_shortcode ($atts) { // Attributes $atts = shortcode_atts( array( 'lang' => '', 'blog' => '', ), $atts ); // Network_Query parameters $args = array( 'posts_per_page' => 14, 'blog_id' => esc_attr($atts ['blog']), 'lang' => esc_attr($atts ['lang']), 'orderby' => 'meta_value_num', 'order' => 'ASC', 'post_type' => 'noo_event', 'meta_key' => '_noo_event_start_date', 'meta_value' => date( "U" ), 'meta_compare' => '>' ); $network_q = new Network_Query( $args ); // if there are posts, then print <ul> if( $network_q->have_posts() ) : echo '<div id="all_events">'; // run the loop while( $network_q->have_posts() ) : $network_q->the_post(); // the get_permalink() function won't work without switch_to_blog() // you can use network_get_permalink() instead but it is a little slower switch_to_blog( $network_q->post->BLOG_ID ); // Get the dates $start_date=get_post_meta($network_q->post->ID, '_noo_event_start_date', true); $_start_date = gmdate("d.m.Y", $start_date); $end_date=get_post_meta($network_q->post->ID, '_noo_event_end_date', true); $_end_date = gmdate("d.m.Y", $end_date); // you can obtain the post title from $network_q->post object echo '<div class="all_events_item post-' . $network_q->post->ID . ' blog-' . $network_q->post->BLOG_ID . '"> <div class="all_events_img"> <a href="' . get_permalink( $network_q->post->ID ) . '"> '.get_the_post_thumbnail( $network_q->post->ID, 'large' ).' </a> </div> <div class="all_events_content"> <h2><a href="' . get_permalink( $network_q->post->ID ) . '">' . $network_q->post->post_title . '</a></h2> <br /> <span class="start_date">'.$_start_date.'</span> - <span class="end_date">'.$_end_date.'</span> </div> </div>'; // restore_current_blog() to switch to the previous (!) website restore_current_blog(); endwhile; echo '</div>'; endif; network_reset_postdata(); // add it after the loop if you plan to use Network_Query multiple times on the page } add_shortcode('all-events', 'all_events_shortcode');Can you give me some hints how I could tackle this problem?
Best wishes
The topic ‘Elementor breaks site with custom shortcode’ is closed to new replies.