我使用插件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;
}
答案 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
;该变量既不存在又无效,因为它以数字开头。