问题
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