wordpress. lightbox plugin error on apply_filter

泄露秘密 提交于 2019-12-11 22:40:47

问题


I use the plugin https://wordpress.org/plugins/show-post-in-lightbox/ to display all feautered image of every post on a page. whenver one of these images get clicked on a lightbox will appear showing the post content.

This all works fine but the original code that display the content uses:

if($_REQUEST['popup']!=''){
$postObj = get_post( $_REQUEST['pid'] );
echo $postObj->post_content;
exit;
}

This works fine besides the fact that its not very need because wordpress cant format the html. also wordpress wont recognize shortcodes. So I decided to chance the script to make sure it works good and I can use shortcodes:

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;
exit;
}

But this gives me the error: error loading lightbox on opening the lightbox. When i delete the APPLT_FILTERS line it doesnt error (but because I need that line it doesnt diplay anything aswell)

But I think its save to assume the

$content = apply_filters('the_content', $content);

is the one that the lightbox crashes on. This code is all inside the plugin files. Does anyone know why the above code generates and 500 crash?

Hope someone can help me out!

the whole code:

 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);

            $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 $before_widget;

            $this->spbc_showWidget($instance);
            echo $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()):

                     echo '
                        <div class="list-posts-by-category">                                   
                            <ul>';
                                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="<?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;
                                echo '
                            </ul>
                        </div>';
             endif;
}

回答1:


Have you checked the Apache/PHP error log file? It's essential for debugging :)

I noticed 2 issues with your code - but correcting them might not actually fix the 500.

These few lines aren't doing what you intend:

$postObj = $_POST['pid'];
$content_post = get_post($$postObj);

Change $_POST['pid'] to $_REQUEST['pid']. The pid query variable isn't being POSTed.

Change $$postObj to $postObj. Imagine $_REQUEST['pid'] returned 123 (a sample post ID). Calling $$postObj would actually try to call $123; that variable would be both non-existent and invalid because it starts with a numeral.



来源:https://stackoverflow.com/questions/25913087/wordpress-lightbox-plugin-error-on-apply-filter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!