2021-11-21 13:14:07 +03:00
|
|
|
|
<?php
|
|
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
function number_info($title, $post_id = 0) {
|
2021-11-21 22:00:02 +03:00
|
|
|
|
$res = [];
|
2021-11-21 13:14:07 +03:00
|
|
|
|
|
|
|
|
|
|
$items = explode(' ', $title);
|
|
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
// Инициализируем переменные
|
|
|
|
|
|
$res['year'] = isset($items[4]) ? $items[4] : '';
|
|
|
|
|
|
$res['number'] = '';
|
|
|
|
|
|
$res['guid'] = '';
|
2025-09-03 00:00:47 +03:00
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
// Проверяем PDF в метаполях
|
2025-09-03 00:00:47 +03:00
|
|
|
|
$pdf_url = get_post_meta($post_id, '_pdf_file', true);
|
|
|
|
|
|
if ($pdf_url) {
|
|
|
|
|
|
$res['guid'] = esc_url($pdf_url);
|
|
|
|
|
|
return $res;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
// Извлекаем номер
|
|
|
|
|
|
if (isset($items[2])) {
|
|
|
|
|
|
$res['number'] = substr($items[2], 1, strlen($items[2]) - 2);
|
|
|
|
|
|
}
|
2021-11-21 13:14:07 +03:00
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
// Формируем имя для поиска
|
|
|
|
|
|
$month = isset($items[3]) ? ru2enmonths($items[3]) : '';
|
|
|
|
|
|
$year = isset($items[4]) ? $items[4] : '';
|
|
|
|
|
|
|
|
|
|
|
|
if ($res['number'] && $month && $year) {
|
|
|
|
|
|
$name = 'vizh_' . $res['number'] . '_' . $month . '_' . $year;
|
|
|
|
|
|
|
|
|
|
|
|
// Используем стандартные методы WordPress для поиска поста
|
|
|
|
|
|
$findpdf = get_posts([
|
|
|
|
|
|
'name' => $name,
|
|
|
|
|
|
'post_type' => 'attachment',
|
|
|
|
|
|
'post_status' => 'inherit',
|
|
|
|
|
|
'post_mime_type' => 'application/pdf',
|
|
|
|
|
|
'posts_per_page' => 1,
|
|
|
|
|
|
'orderby' => 'post_modified',
|
|
|
|
|
|
'order' => 'DESC'
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
|
|
if (!empty($findpdf)) {
|
|
|
|
|
|
$post = $findpdf[0];
|
|
|
|
|
|
$res['guid'] = get_the_guid($post->ID);
|
|
|
|
|
|
|
|
|
|
|
|
// Альтернативно можно получить URL через permalink
|
|
|
|
|
|
// $res['guid'] = get_permalink($post->ID);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-09-03 00:00:47 +03:00
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
return $res;
|
|
|
|
|
|
}
|
2021-11-21 13:14:07 +03:00
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
// Альтернативная версия с использованием WP_Query
|
|
|
|
|
|
function number_info_alt($title, $post_id = 0) {
|
|
|
|
|
|
$res = [];
|
2021-11-21 13:14:07 +03:00
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
$items = explode(' ', $title);
|
2021-11-21 13:14:07 +03:00
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
$res['year'] = isset($items[4]) ? $items[4] : '';
|
|
|
|
|
|
$res['number'] = '';
|
|
|
|
|
|
$res['guid'] = '';
|
|
|
|
|
|
|
|
|
|
|
|
// Проверяем PDF в метаполях
|
|
|
|
|
|
$pdf_url = get_post_meta($post_id, '_pdf_file', true);
|
|
|
|
|
|
if ($pdf_url) {
|
|
|
|
|
|
$res['guid'] = esc_url($pdf_url);
|
|
|
|
|
|
return $res;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Извлекаем номер
|
|
|
|
|
|
if (isset($items[2])) {
|
|
|
|
|
|
$res['number'] = substr($items[2], 1, strlen($items[2]) - 2);
|
|
|
|
|
|
}
|
2021-11-21 13:14:07 +03:00
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
// Формируем имя для поиска
|
|
|
|
|
|
$month = isset($items[3]) ? ru2enmonths($items[3]) : '';
|
|
|
|
|
|
$year = isset($items[4]) ? $items[4] : '';
|
2021-11-21 13:14:07 +03:00
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
if ($res['number'] && $month && $year) {
|
|
|
|
|
|
$name = 'vizh_' . $res['number'] . '_' . $month . '_' . $year;
|
|
|
|
|
|
|
|
|
|
|
|
// Используем WP_Query для более гибкого поиска
|
|
|
|
|
|
$query = new WP_Query([
|
|
|
|
|
|
'name' => $name,
|
|
|
|
|
|
'post_type' => 'any',
|
|
|
|
|
|
'post_status' => 'publish',
|
|
|
|
|
|
'posts_per_page' => 1,
|
|
|
|
|
|
'orderby' => 'modified',
|
|
|
|
|
|
'order' => 'DESC'
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
|
|
if ($query->have_posts()) {
|
|
|
|
|
|
$query->the_post();
|
|
|
|
|
|
$res['guid'] = get_the_guid();
|
|
|
|
|
|
wp_reset_postdata();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $res;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function ru2enmonths($str) {
|
|
|
|
|
|
$ruMonths = [
|
|
|
|
|
|
'январь', 'февраль', 'март', 'апрель', 'май', 'июнь',
|
|
|
|
|
|
'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'
|
|
|
|
|
|
];
|
|
|
|
|
|
$enMonths = [
|
|
|
|
|
|
'january', 'february', 'march', 'april', 'may', 'june',
|
|
|
|
|
|
'july', 'august', 'september', 'october', 'november', 'december'
|
|
|
|
|
|
];
|
2021-11-21 13:14:07 +03:00
|
|
|
|
|
|
|
|
|
|
$enDate = str_ireplace($ruMonths, $enMonths, $str);
|
|
|
|
|
|
|
|
|
|
|
|
return $enDate;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-07 11:05:31 +03:00
|
|
|
|
// Еще более безопасная версия с проверкой slug
|
|
|
|
|
|
function number_info_safe($title, $post_id = 0) {
|
|
|
|
|
|
$res = [
|
|
|
|
|
|
'year' => '',
|
|
|
|
|
|
'number' => '',
|
|
|
|
|
|
'guid' => ''
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
$items = explode(' ', $title);
|
|
|
|
|
|
|
|
|
|
|
|
// Проверяем PDF в метаполях
|
|
|
|
|
|
$pdf_url = get_post_meta($post_id, '_pdf_file', true);
|
|
|
|
|
|
if ($pdf_url) {
|
|
|
|
|
|
$res['guid'] = esc_url($pdf_url);
|
|
|
|
|
|
return $res;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Безопасное извлечение данных
|
|
|
|
|
|
if (count($items) >= 5) {
|
|
|
|
|
|
$res['year'] = sanitize_text_field($items[4]);
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($items[2])) {
|
|
|
|
|
|
$res['number'] = substr($items[2], 1, strlen($items[2]) - 2);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$month = ru2enmonths($items[3]);
|
|
|
|
|
|
$name = 'vizh_' . $res['number'] . '_' . $month . '_' . $res['year'];
|
|
|
|
|
|
|
|
|
|
|
|
// Ищем пост по slug
|
|
|
|
|
|
$args = [
|
|
|
|
|
|
'name' => $name,
|
|
|
|
|
|
'post_type' => 'any',
|
|
|
|
|
|
'post_status' => 'publish',
|
|
|
|
|
|
'posts_per_page' => 1,
|
|
|
|
|
|
'orderby' => 'modified',
|
|
|
|
|
|
'order' => 'DESC'
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
$posts = get_posts($args);
|
|
|
|
|
|
|
|
|
|
|
|
if (!empty($posts)) {
|
|
|
|
|
|
$post = $posts[0];
|
|
|
|
|
|
$res['guid'] = get_permalink($post->ID); // Лучше использовать permalink чем guid
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $res;
|
|
|
|
|
|
}
|