Что может быть причиной отсутствия миниатюры записи?

19 нояб. 2014 г., 13:15:19
Просмотры: 293
Голосов: 0

Я создаю дочернюю тему для темы editr, и миниатюра записи не отображается для новой записи. Для демо-контента миниатюры отображаются нормально. Для новой записи генерируется следующая разметка:

<div class="featured" data-img_bg="">
        <img src="" alt="" style="display: block;">
    </div>

Соответствующий раздел шаблона:

<?php if ( ( $show_thumb || $show_thumb == '' ) && has_post_thumbnail() ) { ?>

    <div class="featured" data-img_bg="<?php echo $image; ?>">
        <img src="<?php echo $image; ?>" alt="">
    </div>

    <?php } ?>

Система: локальная VM на Vagrant с Ubuntu 14.04, nginx, PHP 5.6.

Я проверил опции 'Display featured thumbnail?' и 'Featured post?' в редакторе записи. В начале шаблона обнаружил, что значение $image пустое:

<?php
$show_thumb = get_post_meta(get_the_ID(), 'aq_show_thumbnail', TRUE);

$thumb = wp_get_attachment_url( get_post_thumbnail_id(), 'full');
echo 'thumb value is set to'.$thumb;
$image = aq_resize( $thumb, 1000, 400, true );
echo 'image value is set to'.$image;
?>

ОБНОВЛЕНИЕ

Отладка с помощью xdebug показывает, что функция aq_resize завершается с ошибкой в следующем коде:

else {

$editor = wp_get_image_editor($img_path);

if ( is_wp_error( $editor ) || is_wp_error( $editor->resize( $width, $height, $crop ) ) )
    return false;

$resized_file = $editor->save();

if(!is_wp_error($resized_file)) {
    $resized_rel_path = str_replace( $upload_dir, '', $resized_file['path']);
    $img_url = $upload_url . $resized_rel_path;
} else {
    return false;
}

}

Переменная $editor содержит значение 'No editor could be selected.' (Не удалось выбрать редактор изображений).

2
Комментарии

Убедитесь, что запускаете код внутри цикла. Проверьте значение $thumb, get_post_thumbnail_id() и т.д.

Sisir Sisir
19 нояб. 2014 г. 13:38:11

@Sisir спасибо. Значение thumb - это путь к изображению.

codecowboy codecowboy
19 нояб. 2014 г. 13:43:11
Все ответы на вопрос 2
0

Расширение PHP GD не было установлено на моей машине для разработки. Установка php5-gd решила проблему - sudo apt-get install php5-gd

Пошаговая отладка с использованием xdebug показала, что функция темы aq_resize завершалась ошибкой на следующем участке кода:

else {

    $editor = wp_get_image_editor($img_path);

    if ( is_wp_error( $editor ) || is_wp_error( $editor->resize( $width, $height, $crop ) ) )
        return false;

    $resized_file = $editor->save();

    if(!is_wp_error($resized_file)) {
        $resized_rel_path = str_replace( $upload_dir, '', $resized_file['path']);
        $img_url = $upload_url . $resized_rel_path;
    } else {
        return false;
    }

}

$editor был установлен в значение 'No editor could be selected.' (Не удалось выбрать редактор.)

19 нояб. 2014 г. 14:01:24
1

Выводится ли HTML на страницу? Если нет, то проблема почти наверняка в вашем условном операторе. Должно быть:

if ( ( $show_thumb || $show_thumb !== '' ) && has_post_thumbnail() ) 

вместо:

if ( ( $show_thumb || $show_thumb == '' ) && has_post_thumbnail() ) 
19 нояб. 2014 г. 13:43:56
Комментарии

да, разметка выводится. Просто значение $image пустое.

codecowboy codecowboy
19 нояб. 2014 г. 13:46:51