WP: правильно собрать цикл произвольных записей

GA
На сайте с 16.06.2013
Offline
61
652

Здравствуйте.

WP последняя версия.

В качестве слайдра использую slick js

Нашёл старенький плагин для ВП под данный скрипт слайдера.

Суть: создаёт произвольный тип записи, начинка: название, отрывок (краткое описание), картинка.

Правлю его под себя, а именно, нужно вытянуть для каждого слайда отрывок с сохранением форматирования, которое задавалось в админке (перенос строк нажатие на Enter). Никак не выходит, либо вытягиваю данные, но перенос строк исключается, либо вообще не удаётся.

<?php // Подтягиваем нужные данные

function slick_load_images($attributes) {
$args = array(
'post_type' => 'slick',
'posts_per_page' => '-1',
'orderby' => $attributes['orderby'],
'order' => $attributes['order']
);
if (!empty($attributes['category'])) {
$args['slider_category'] = $attributes['category'];
}

if (!empty($attributes['id'])) {
$args['p'] = $attributes['id'];
}

$loop = new WP_Query($args);
$images = array();
$output = '';
while ($loop->have_posts()) {
$loop->the_post();
$image = get_the_post_thumbnail(get_the_ID(), 'full');
if (!empty($image)) {
$post_id = get_the_ID();
$title = get_the_title();
$content = get_the_excerpt();
$image_src = wp_get_attachment_image_src(get_post_thumbnail_id(), 'full');
$image_src = $image_src[0];
$url = get_post_meta(get_the_ID(), 'slick_image_url');
$url_openblank = get_post_meta(get_the_ID(), 'slick_image_url_openblank');
$images[] = array(
'post_id' => $post_id,
'title' => $title,
'content' => $content,
'image' => $image,
'img_src' => $image_src,
'url' => esc_url($url[0]),
'open_blank' => $url_openblank[0],
);
}
}
return $images;
}

// Выводим слайдер
function slick_frontend($attributes) {
$images = slick_load_images($attributes);
if (0 === count($images)) {
return '';
}
ob_start();
?>
<section class="slider">
<?php foreach ($images as $key => $image) : ?>
<div class="slide-item">
<?php
$linkstart = '';
$linkend = '';
if ($image['url']) {
$linkstart = '<a href="' . $image['url'] . '" ';
if ($image['open_blank']) {
$linkstart .= 'target="_blank" ';
}
$linkstart .= '>';
$linkend = '</a>';
}
?>
<?php echo $linkstart ?>
<div class="slide-item-cont">
<div class="slide-img"><img src="<?php echo $image['img_src'] ?>" alt="<?php echo esc_html($image['title']) ?>" title="<?php echo esc_html($image['title']) ?>" /></div>
<div class="slide-text">
<div class="slide-text-wrap">
<span class="slide-name"><?php echo esc_html($image['title']) ?></span>
ТУТ ВОТ НАДО ОТРЫВОК ВЫВЕСТИ
</div>
</div>
</div>
<?php echo $linkend ?>
</div>
<?php endforeach ?>
</section>

<?php
$output = ob_get_contents();
ob_end_clean();
wp_reset_postdata();
return $output;
}

add_shortcode('slick-slider', 'slick_frontend');
S3
На сайте с 29.03.2012
Offline
366
#1

Почитайте про wpautop() - может она вам поможет

GA
На сайте с 16.06.2013
Offline
61
#2
Sly32:
Почитайте про wpautop() - может она вам поможет

читал, но раньше почему-то не сообразил, думал эту функцию только принудительно выключать можно, а так она всегда вкл.

кажется получилось

<?php echo wpautop($image['content']) ?>
S3
На сайте с 29.03.2012
Offline
366
#3
Green arrow:
а так она всегда вкл.

Для основных типов записи - да, но откеуда ей знать про ваш новый тип? Можно добавить фильтр в functions, что бы не прописывать в циклах каждый раз

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий