Files
klient-prav.ru/wp-content/themes/clientprav-theme/single.php

382 lines
23 KiB
PHP
Raw Normal View History

<?php
/**
* Шаблон одиночной записи
*
* @package Clientprav
*/
get_header();
?>
<div class="min-h-screen bg-gray-50 pt-24 pb-16">
<div class="max-w-6xl mx-auto px-4 sm:px-6">
<!-- Навигация назад -->
<?php
$categories = get_the_category();
$category_slug = !empty($categories) ? $categories[0]->slug : '';
if ($category_slug) :
?>
<a href="<?php echo esc_url(clientprav_get_category_link($category_slug)); ?>"
class="text-gray-600 hover:text-gray-900 mb-8 inline-flex items-center gap-2 transition-colors">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path>
</svg>
Назад к списку
</a>
<?php endif; ?>
<article id="post-<?php the_ID(); ?>" <?php post_class('max-w-4xl mx-auto'); ?>>
<header class="mb-8">
<!-- Категория Badge -->
<?php
$categories = get_the_category();
$category_name = !empty($categories) ? $categories[0]->name : '';
// Для кейсов используем case_taxonomy вместо названия категории
if (has_category('cases')) {
$case_taxonomy = clientprav_get_case_taxonomy(get_the_ID());
if (!empty($case_taxonomy)) {
$category_name = $case_taxonomy;
}
}
if (!empty($category_name)) :
?>
<div class="mb-4">
<span class="text-sm <?php echo has_category('cases') ? 'bg-blue-100 text-blue-700' : 'bg-blue-50 text-blue-600'; ?> px-4 py-1.5 rounded-full">
<?php echo esc_html($category_name); ?>
</span>
</div>
<?php endif; ?>
<h1 class="text-5xl text-gray-900 mb-6 leading-tight">
<?php the_title(); ?>
</h1>
<!-- Мета-информация -->
<?php if (has_category('news')) : ?>
<div class="flex items-center justify-between mb-8 pb-6 border-b border-gray-200">
<div class="flex items-center gap-6 text-gray-600">
<div class="flex items-center gap-2">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path>
</svg>
<span><?php echo get_the_date('d F Y'); ?></span>
</div>
<div>Автор: <?php the_author(); ?></div>
<?php
$reading_time = get_post_meta(get_the_ID(), 'reading_time', true);
if (empty($reading_time)) {
$content = get_the_content();
$word_count = str_word_count(strip_tags($content));
$reading_time = max(1, round($word_count / 200)); // 200 слов в минуту
}
?>
<div><?php echo $reading_time; ?> мин чтения</div>
</div>
<!-- Кнопка "Поделиться" -->
<div class="relative">
<button id="share-btn" class="flex items-center gap-2 text-gray-600 hover:text-blue-600 transition-colors">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.368 2.684 3 3 0 00-5.368-2.684z"></path>
</svg>
Поделиться
</button>
<div id="share-menu" class="hidden absolute right-0 mt-2 bg-white border border-gray-200 rounded-xl shadow-lg p-2 min-w-[200px] z-10">
<a href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode(get_permalink()); ?>" target="_blank" class="w-full flex items-center gap-3 px-4 py-2 rounded-lg hover:bg-gray-50">
<svg class="w-5 h-5 text-blue-600" fill="currentColor" viewBox="0 0 24 24">
<path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/>
</svg>
<span>Facebook</span>
</a>
<a href="https://twitter.com/intent/tweet?url=<?php echo urlencode(get_permalink()); ?>&text=<?php echo urlencode(get_the_title()); ?>" target="_blank" class="w-full flex items-center gap-3 px-4 py-2 rounded-lg hover:bg-gray-50">
<svg class="w-5 h-5 text-sky-500" fill="currentColor" viewBox="0 0 24 24">
<path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/>
</svg>
<span>Twitter</span>
</a>
<a href="mailto:?subject=<?php echo urlencode(get_the_title()); ?>&body=<?php echo urlencode(get_permalink()); ?>" class="w-full flex items-center gap-3 px-4 py-2 rounded-lg hover:bg-gray-50">
<svg class="w-5 h-5 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path>
</svg>
<span>Email</span>
</a>
</div>
</div>
</div>
<?php elseif (has_category('cases')) : ?>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8 py-6 border-y border-gray-200">
<div class="flex items-center gap-2 text-gray-600">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path>
</svg>
<span>Дата решения: <?php echo get_the_date('d F'); ?></span>
</div>
<?php
$duration = get_post_meta(get_the_ID(), 'case_duration_days', true);
if (empty($duration)) {
$duration = get_post_meta(get_the_ID(), 'duration_days', true);
}
if (!empty($duration)) :
?>
<div class="flex items-center gap-2 text-gray-600">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
<span>Срок: <?php echo esc_html($duration); ?> дней</span>
</div>
<?php endif; ?>
<?php
$result = clientprav_get_case_result(get_the_ID());
if (!empty($result)) :
?>
<div class="flex items-center gap-2 text-green-600">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"></path>
</svg>
<span class="font-semibold"><?php echo esc_html($result); ?></span>
</div>
<?php endif; ?>
</div>
<?php elseif (has_category('faq')) : ?>
<div class="flex items-center gap-6 mb-8 pb-6 border-b border-gray-200 text-gray-600">
<div>Юрист: <?php the_author(); ?></div>
<?php
$views = get_post_meta(get_the_ID(), 'faq_views_count', true);
if (empty($views)) {
$views = get_post_meta(get_the_ID(), 'views_count', true);
}
if (!empty($views)) :
?>
<div class="flex items-center gap-2">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
</svg>
<span><?php echo number_format($views, 0, ',', ' '); ?> просмотра</span>
</div>
<?php endif; ?>
<div><?php echo get_the_date('d F Y'); ?></div>
</div>
<?php endif; ?>
<?php if (has_post_thumbnail()) : ?>
<div class="aspect-video rounded-2xl overflow-hidden bg-gray-200 mb-10">
<?php the_post_thumbnail('large', array('class' => 'w-full h-full object-cover')); ?>
</div>
<?php endif; ?>
</header>
<!-- Контент статьи -->
<div class="prose prose-lg max-w-none mb-12">
<?php
the_content();
wp_link_pages(array(
'before' => '<div class="page-links">' . __('Страницы:', 'clientprav'),
'after' => '</div>',
));
?>
</div>
<?php if (has_category('cases')) : ?>
<?php
$problem = clientprav_get_case_problem(get_the_ID());
$result = clientprav_get_case_result(get_the_ID());
?>
<!-- Ситуация -->
<?php if ($problem) : ?>
<section class="mb-12">
<h2 class="text-3xl text-gray-900 mb-6">Ситуация</h2>
<div class="prose prose-lg max-w-none">
<?php echo wpautop(esc_html($problem)); ?>
</div>
</section>
<?php endif; ?>
<!-- Решение (временная шкала) -->
<?php
$timeline = get_post_meta(get_the_ID(), 'case_timeline', true);
if (empty($timeline)) {
$timeline = get_post_meta(get_the_ID(), 'timeline', true);
}
if (!empty($timeline) || $problem) :
?>
<section class="mb-12 bg-gray-50 rounded-2xl p-8">
<h2 class="text-3xl text-gray-900 mb-6">Как мы решали</h2>
<?php if (!empty($timeline) && is_array($timeline)) : ?>
<div class="space-y-4">
<?php foreach ($timeline as $index => $item) : ?>
<div class="flex gap-4">
<div class="flex flex-col items-center">
<div class="w-8 h-8 bg-blue-600 rounded-full flex items-center justify-center">
<?php if ($index === count($timeline) - 1) : ?>
<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
</svg>
<?php else : ?>
<div class="w-2 h-2 bg-white rounded-full"></div>
<?php endif; ?>
</div>
<?php if ($index !== count($timeline) - 1) : ?>
<div class="w-0.5 h-full bg-blue-200 mt-2"></div>
<?php endif; ?>
</div>
<div class="flex-1 pb-6">
<div class="text-sm text-blue-600 mb-1"><?php echo esc_html($item['date'] ?? ''); ?></div>
<div class="text-gray-900"><?php echo esc_html($item['event'] ?? ''); ?></div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php else : ?>
<div class="prose prose-lg max-w-none">
<?php the_content(); ?>
</div>
<?php endif; ?>
</section>
<?php endif; ?>
<!-- Результат -->
<?php if ($result) : ?>
<section class="mb-12">
<h2 class="text-3xl text-gray-900 mb-6">Результат</h2>
<div class="prose prose-lg max-w-none">
<div class="bg-green-50 rounded-lg p-4 border-l-4 border-green-600">
<p class="text-green-700 font-semibold text-lg"><?php echo esc_html($result); ?></p>
</div>
</div>
</section>
<?php endif; ?>
<!-- Документы -->
<?php
$documents = get_post_meta(get_the_ID(), 'case_documents', true);
if (empty($documents)) {
$documents = get_post_meta(get_the_ID(), 'documents', true);
}
if (!empty($documents)) :
if (!is_array($documents)) {
$documents = explode("\n", $documents);
}
?>
<section class="mb-12 bg-blue-50 rounded-2xl p-8">
<div class="flex items-start gap-4 mb-6">
<svg class="w-6 h-6 text-blue-600 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path>
</svg>
<div>
<h3 class="text-xl text-gray-900 mb-2">Подготовленные документы</h3>
<p class="text-gray-600">Все эти документы мы подготовили бесплатно в рамках нашего сервиса</p>
</div>
</div>
<ul class="space-y-2">
<?php foreach ($documents as $doc) : ?>
<li class="flex items-center gap-3">
<svg class="w-5 h-5 text-green-600 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
</svg>
<span class="text-gray-700"><?php echo esc_html(trim($doc)); ?></span>
</li>
<?php endforeach; ?>
</ul>
</section>
<?php endif; ?>
<!-- CTA блок для кейсов (градиент) -->
<div class="bg-gradient-to-r from-blue-600 to-blue-700 rounded-2xl p-10 mb-12 text-white text-center">
<svg class="w-12 h-12 mx-auto mb-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 6l3 1m0 0l-3 9a5.002 5.002 0 006.001 0M6 7l3 9M6 7l6-2m6 2l3-1m-3 1l-3 9a5.002 5.002 0 006.001 0M18 7l3 9m-3-9l-6-2m0-2v2m0 16V5m0 16H9m3 0h3"></path>
</svg>
<h3 class="text-3xl mb-4">Попали в похожую ситуацию?</h3>
<p class="text-xl mb-6 text-blue-100">Мы поможем защитить ваши права бесплатно. Расскажите о своей проблеме, и мы подготовим все необходимые документы.</p>
<a href="<?php echo esc_url(clientprav_get_form_url()); ?>"
class="inline-block bg-white text-blue-600 px-10 py-4 rounded-lg hover:bg-blue-50 transition-colors font-semibold">
Получить помощь
</a>
</div>
<?php endif; ?>
<?php if (has_category('faq')) : ?>
<?php
$short_answer = clientprav_get_faq_short_answer(get_the_ID());
if ($short_answer) :
?>
<!-- Краткий ответ -->
<div class="mb-10 bg-blue-50 border-l-4 border-blue-600 rounded-r-xl p-6">
<h3 class="text-xl text-gray-900 mb-3">Краткий ответ</h3>
<p class="text-gray-700 leading-relaxed"><?php echo esc_html($short_answer); ?></p>
</div>
<?php endif; ?>
<!-- CTA блок для FAQ -->
<div class="bg-blue-50 rounded-2xl p-8 mb-12">
<h3 class="text-2xl text-gray-900 mb-3">Нужна помощь с защитой прав потребителей?</h3>
<p class="text-gray-600 mb-6">Наш сервис бесплатно поможет составить претензию, жалобу или исковое заявление</p>
<a href="<?php echo esc_url(clientprav_get_form_url()); ?>"
class="inline-block bg-blue-600 text-white px-8 py-3 rounded-lg hover:bg-blue-700 transition-colors">
Получить консультацию
</a>
</div>
<?php endif; ?>
<?php if (has_category('news')) : ?>
<!-- CTA блок для новостей -->
<div class="bg-blue-50 rounded-2xl p-8 mb-12">
<h3 class="text-2xl text-gray-900 mb-3">Нужна помощь с защитой прав потребителей?</h3>
<p class="text-gray-600 mb-6">Наш сервис бесплатно поможет составить претензию, жалобу или исковое заявление</p>
<a href="<?php echo esc_url(clientprav_get_form_url()); ?>"
class="inline-block bg-blue-600 text-white px-8 py-3 rounded-lg hover:bg-blue-700 transition-colors">
Получить консультацию
</a>
</div>
<?php endif; ?>
<!-- Похожие материалы -->
<?php
$current_categories = wp_get_post_categories(get_the_ID());
$related_query = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => 3,
'post__not_in' => array(get_the_ID()),
'category__in' => $current_categories,
'orderby' => 'date',
'order' => 'DESC',
));
if ($related_query->have_posts()) :
?>
<div class="mt-12">
<h3 class="text-2xl text-gray-900 mb-6">
<?php echo has_category('cases') ? 'Другие кейсы' : (has_category('faq') ? 'Похожие вопросы' : 'Читайте также'); ?>
</h3>
<div class="space-y-4">
<?php while ($related_query->have_posts()) : $related_query->the_post(); ?>
<a href="<?php the_permalink(); ?>"
class="block bg-gray-50 rounded-xl p-5 hover:bg-gray-100 transition-colors group">
<div class="flex items-center justify-between">
<div>
<div class="text-sm text-gray-500 mb-2"><?php echo get_the_date(); ?></div>
<div class="text-lg text-gray-900 group-hover:text-blue-600 transition-colors">
<?php the_title(); ?>
</div>
</div>
<svg class="w-5 h-5 text-gray-400 group-hover:text-blue-600 transition-colors rotate-180" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path>
</svg>
</div>
</a>
<?php endwhile; ?>
</div>
</div>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
</article>
</div>
</div>
<?php
get_footer();