Я использую плагин 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;
}
Вы проверили файл журнала ошибок Apache / PHP? Это важно для отладки 🙂
Я заметил 2 проблемы с вашим кодом — но исправление их может не исправить 500.
Эти несколько строк не делают то, что вы намереваетесь:
$postObj = $_POST['pid'];
$content_post = get_post($$postObj);
+ Изменить $_POST['pid']
в $_REQUEST['pid']
, Переменная запроса pid не отправляется.
+ Изменить $$postObj
в $postObj
, Представить $_REQUEST['pid']
возвращенный 123
(образец идентификатора поста). призвание $$postObj
на самом деле попытаться позвонить $123
; эта переменная будет как несуществующей, так и недействительной, потому что она начинается с цифры.
Других решений пока нет …