WordPress的。 apply_filter上的lightbox插件错误

时间:2014-09-18 12:50:18

标签: php wordpress wordpress-plugin lightbox

我使用插件https://wordpress.org/plugins/show-post-in-lightbox/来显示页面上每个帖子的所有功能图像。当这些图像中的一个被点击在灯箱上时,将显示帖子内容。

这一切都很好,但显示内容的原始代码使用:

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

除了不太需要因为wordpress无法格式化html之外,这个工作正常。 wordpress也不会识别短代码。所以我决定让脚本确保它运行良好,我可以使用短代码:

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

但是这给了我错误:在打开灯箱时加载灯箱时出错。当我删除APPLT_FILTERS行时它不会出错(但是因为我需要那行它不会显示任何东西)

但我认为它可以假设

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

是灯箱崩溃的那个。 这段代码都在插件文件中。有谁知道为什么上面的代码生成和500崩溃?

希望有人可以帮助我!

整个代码:

 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 个答案:

答案 0 :(得分:0)

您检查过Apache / PHP错误日志文件吗?这对于调试至关重要:)

我注意到你的代码有两个问题 - 但纠正它们可能实际上并没有修复500。

这几行并不符合你的意图:

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

$_POST['pid']更改为$_REQUEST['pid']。 pid查询变量未被POST。

$$postObj更改为$postObj。想象一下$_REQUEST['pid']返回123(样本帖ID)。致电$$postObj实际上会尝试拨打$123;该变量既不存在又无效,因为它以数字开头。