Shortcode error after updating to latest release

After updating WordPress, theme and plugins to their latest releases and ensuring compatibility is gooooood, a page with a recent posts shortcode is throwing a PHP error that I’m hoping to get some insight to resolving. I had previously gotten help with adding excerpts to the recent post element which is the code in the child functions that this error is referring to but it’s looking for something that doesn’t exist in the Cornerstone/Shortcodes folder. Will include link in secure post.

Fatal error : Uncaught Error: Call to undefined function cs_get_raw_excerpt() in /wp-content/themes/x-child/functions.php:89 Stack trace: #0 /wp-includes/shortcodes.php(343): x_shortcode_recent_posts_v2code(Array, ‘’, ‘x_recent_posts’) #1 [internal function]: do_shortcode_tag(Array) #2 /wp-includes/shortcodes.php(218): preg_replace_callback(’/\[(\[?)(x_rece…’, ‘do_shortcode_ta…’, ‘[x_recent_posts…’) #3 /wp-content/plugins/cornerstone/includes/shortcodes/raw-content.php(18): do_shortcode(’[x_recent_posts…’) #4 /wp-includes/shortcodes.php(343): x_shortcode_raw_content(’’, ‘[x_recent_posts…’, ‘x_raw_content’) #5 [internal function]: do_shortcode_tag(Array) #6 /wp-includes/shortcodes.php(218): preg_replace_callback(’/\[(\[?)(x_raw_…’, ‘do_shortcode_ta…’, ‘<div id="cs-con…’) #7 /wp-content/plugins/cornerstone/includes/clas in /wp-content/themes/x-child/functions.php on line 89

Hello @be3designs,

Thanks for posting in!

The error message is coming from your child theme’s functions.php because your custom recent posts PHP code that is outdated and no longer works.

// Add Excerpts to the recent post element
// =============================================================================
function x_shortcode_recent_posts_v2code( $atts ) {
  extract( shortcode_atts( array(
    'id'           => '',
    'class'        => '',
    'style'        => '',
    'type'         => 'post',
    'count'        => '',
    'category'     => '',
    'offset'       => '',
    'orientation'  => '',
    'show_excerpt' => 'false',
    'no_sticky'    => '',
    'no_image'     => '',
    'fade'         => ''
  ), $atts, 'x_recent_posts' ) );

  $allowed_post_types = apply_filters( 'cs_recent_posts_post_types', array( 'post' => 'post' ) );
  $type = ( isset( $allowed_post_types[$type] ) ) ? $allowed_post_types[$type] : 'post';

  $id            = ( $id           != ''     ) ? 'id="' . esc_attr( $id ) . '"' : '';
  $class         = ( $class        != ''     ) ? 'x-recent-posts cf ' . esc_attr( $class ) : 'x-recent-posts cf';
  $style         = ( $style        != ''     ) ? 'style="' . $style . '"' : '';
  $count         = ( $count        != ''     ) ? $count : 3;
  $category      = ( $category     != ''     ) ? $category : '';
  $category_type = ( $type         == 'post' ) ? 'category_name' : 'portfolio-category';
  $offset        = ( $offset       != ''     ) ? $offset : 0;
  $orientation   = ( $orientation  != ''     ) ? ' ' . $orientation : ' horizontal';
  $show_excerpt  = ( $show_excerpt == 'true' );
  $no_sticky     = ( $no_sticky    == 'true' );
  $no_image      = ( $no_image     == 'true' ) ? $no_image : '';
  $fade          = ( $fade         == 'true' ) ? $fade : 'false';

  $js_params = array(
    'fade' => ( $fade == 'true' )
  );

  $data = cs_generate_data_attributes( 'recent_posts', $js_params );

  $output = "<div {$id} class=\"{$class}{$orientation}\" {$style} {$data} data-fade=\"{$fade}\" >";

    $q = new WP_Query( array(
  'orderby'             => 'date',
  'post_type'           => "{$type}",
  'posts_per_page'      => "{$count}",
  'offset'              => "{$offset}",
  "{$category_type}"    => "{$category}",
  'ignore_sticky_posts' => $no_sticky
) );

if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post();

  if ( $no_image == 'true' ) {
    $image_output       = '';
    $image_output_class = 'no-image';
  } else {
    $image              = wp_get_attachment_image_src( get_post_thumbnail_id(), 'entry-cropped' );
    $bg_image           = ( $image[0] != '' ) ? ' style="background-image: url(' . $image[0] . ');"' : '';
    $image_output       = '<div class="x-recent-posts-img"' . $bg_image . '></div>';
    $image_output_class = 'with-image';
  }

   $excerpt = ( $show_excerpt ) ? '<div class="x-recent-posts-excerpt"><p style="color:initial;">' . preg_replace('/<a.*?more-link.*?<\/a>/', '', cs_get_raw_excerpt() ) . '</p></div>' : '';

  $output .= '<a class="x-recent-post' . $count . ' ' . $image_output_class . '" href="' . get_permalink( get_the_ID() ) . '" title="' . esc_attr( sprintf( __( 'Permalink to: "%s"', 'cornerstone' ), the_title_attribute( 'echo=0' ) ) ) . '">'
             . '<article id="post-' . get_the_ID() . '" class="' . implode( ' ', get_post_class() ) . '">'
               . '<div class="entry-wrap">'
                 . $image_output
                 . '<div class="x-recent-posts-content">'
                   . '<h3 class="h-recent-posts">' . get_the_title() . '</h3>'
                   //. '<span class="x-recent-posts-date">' . get_the_date() . '</span>'
                    . $excerpt
	  				. '<span class="x-btn x-btn-block">Read More</span>'
                 . '</div>'
               . '</div>'
             . '</article>'
           . '</a>';

endwhile; endif; wp_reset_postdata();
  $output .= '</div>';

  return $output;
}

// =============================================================================

Please remove the code instead.

We highly recommend that you remove this custom PHP code. You can edit your page where you have inserted the recent posts shortcode and use the new Posts element instead. Please check out this documentation to know more about this new Recent Posts element:

Or check out this video demo:

Best Regards.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.