WordPress Apply filter in plugin causes 500 internal error

First of all, you should learn how to debug. If you’re getting a 500 internal error, then the error should show up in your error logs.

I’ve made the following corrections to your code below:

NEVER USE extract() instead get the values using their various keys from the array.

Your class didn’t have a closing brace

You should use PHP’s output buffering, that way you get all the output from spbc_showWidget() and can then echo it in your widget function

if($_REQUEST['popup']!=''){

    $postObj = $_POST['pid'];
    $content_post = get_post($postObj);
    $content = $content_post->post_content;
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]>', $content);
    echo $content;
}

class spbc_showPostsWidget extends WP_Widget
{

    function spbc_showPostsWidget()
    {
        $options = array('description' => 'Show posts from selected categories.');
        parent::WP_Widget(false, $name="Show Posts By Category", $options);
    }

    /*-----------------------------------------------------------*/
    function widget($args, $instance)
    {
        extract($args, EXTR_SKIP); // NEVER USE EXTRACT

        $ost_title = empty($instance['ost_title']) ? ' ' : apply_filters('widget_title', $instance['ost_title']);
        $ost_limit = (is_numeric($instance['ost_limit'])) ? $instance['ost_limit'] : 5;
        $ost_orderby = ($instance['ost_orderby']) ? $instance['ost_orderby'] : 'date';
        $ost_order = ($instance['ost_order']) ? $instance['ost_order'] : 'desc';
        $ost_exclude = ($instance['ost_exclude'] != '') ? $instance['ost_exclude'] : 0;
        $ost_excludeposts = ($instance['ost_excludeposts'] != '') ? $instance['ost_excludeposts'] : 0;
        $ost_category_id = $instance['ost_categoryid'];
        $ost_showdate = ($instance['ost_show_date'] == 'on') ? 'yes' : 'no';
        $ost_thumbnail = ($instance['ost_thumbnail'] == 'on') ? 'yes' : 'no';
        $ost_thumbnail_size = ($instance['ost_thumbnail_size']) ? $instance['ost_thumbnail_size'] : 'thumbnail';

        echo $args['before_widget'];

        echo $this->spbc_showWidget($instance);
        echo $args['after_widget'];
    }

    /*-----------------------------------------------------------*/
    public static function get_UrlFromText($content, $url="Y")
    {

        if ($url == 'Y') {
            $imgpattern = '/src=[\'"]?([^\'" >]+)[\'" >]/';
            preg_match($imgpattern, $content, $article_image);
        } else {
            preg_match_all('/<img[^>]+>/i', $content, $article_image);
        }
        return $article_image;
    }

    /*-----------------------------------------------------------*/
    function spbc_showWidget($instance)
    {
        global $post;
        $query = array(
            'posts_per_page' => $instance['ost_limit'],
            'cat' => $instance['ost_categoryid'],
            'orderby' => $instance['ost_orderby'],
            'order' => $instance['ost_order'],
            'category__not_in' => array($instance['ost_exclude']),
            'post__not_in' => array($instance['ost_excludeposts'])
        );

        $wp_query = new WP_Query($query);

        if ($wp_query->have_posts()):

            ob_start() ?>
            <div class="list-posts-by-category">
                <ul>
                <?php while ($wp_query->have_posts()):
                    $wp_query->the_post();
                    $image_id = get_post_thumbnail_id();


                    if (!empty($instance['ost_thumbnail'])) {
                        if (in_array($instance['ost_thumbnail_size'], array('thumbnail', 'medium', 'large', 'full'))) {
                            $ost_thumb_size = $instance['ost_thumbnail_size'];
                        } elseif ($instance['ost_thumbnail_size']) {
                            $ost_thumb_size = array($instance['ost_thumbnail_size']);
                        } else {
                            $ost_thumb_size="thumbnail";
                        }
                        $ost_thumbnail = get_the_post_thumbnail($post->ID, $ost_thumb_size);
                    } else {
                        $ost_thumbnail = "";
                    }
                    ?>

                    <li>
                    <a class="ostlightbox" href="https://wordpress.stackexchange.com/questions/161856/<?php echo get_site_url() ."/index.php?pid=' . $post->ID . '&popup=Y'; ?>"
                       title="<?php echo the_title_attribute(); ?>">
                        <?php echo '<div class="ostoverlay"></div>'; ?>
                        <?php echo '<div class="titleconthidden"><p class="osttitle">' . $post->post_title . '</p></div>'; ?>
                        <?php echo '<div class="titlecont"></div>'; ?>


                        <?php echo $ost_thumbnail; ?>
                    </a>
                    <?php if (!empty($instance['ost_show_date'])) { ?>
                    <span><?php echo get_the_time('F jS, Y'); ?></span><?php } ?>
                    </li><?php
                endwhile; ?>
                </ul>
            </div>;
        <?php endif;
        return ob_get_clean();

    }
}

error code: 523