Files
sportpressa_backend/inc/postdate.php
2026-01-10 10:34:14 +03:00

137 lines
5.1 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
function create_postdaty_post_type() {
register_post_type('postdaty',
array(
'labels' => array(
'name' => __('Постдаты'),
'singular_name' => __('Постдата'),
'add_new' => __('Добавить постдату'),
'add_new_item' => __('Добавить новую постдату'),
'edit_item' => __('Редактировать постдату'),
'new_item' => __('Новая постдата'),
'view_item' => __('Посмотреть постдату'),
'search_items' => __('Искать постдаты'),
'not_found' => __('Постдат не найдено'),
'not_found_in_trash' => __('В корзине постдат не найдено'),
'all_items' => __('Все постдаты'),
'menu_name' => __('Постдаты')
),
'public' => true,
'has_archive' => true,
'supports' => array('title', 'editor'), // Убрали 'custom-fields'
'menu_icon' => 'dashicons-calendar-alt',
'rewrite' => array('slug' => 'postdaty')
)
);
}
add_action('init', 'create_postdaty_post_type');
// Добавление метабокса
function add_postdata_date_meta_box() {
add_meta_box(
'postdata_date_meta_box',
'Дата события',
'postdata_date_meta_box_html',
'postdaty',
'side',
'default'
);
}
add_action('add_meta_boxes', 'add_postdata_date_meta_box');
// HTML метабокса
function postdata_date_meta_box_html($post) {
$event_date = get_post_meta($post->ID, '_postdata_event_date', true);
wp_nonce_field('postdata_date_nonce', 'postdata_date_nonce_field');
?>
<label for="postdata_event_date">Выберите дату:</label>
<input name="postdata_event_date" type="date" value="<?php echo esc_attr($event_date); ?>" style="width:100%;">
<?php
}
// Сохранение даты
function save_postdata_date_meta($post_id) {
if (!isset($_POST['postdata_date_nonce_field']) ||
!wp_verify_nonce($_POST['postdata_date_nonce_field'], 'postdata_date_nonce')) {
return;
}
if (array_key_exists('postdata_event_date', $_POST)) {
update_post_meta(
$post_id,
'_postdata_event_date',
sanitize_text_field($_POST['postdata_event_date'])
);
}
}
add_action('save_post', 'save_postdata_date_meta');
// Добавление метабокса связи
function add_postdata_biography_meta_box() {
add_meta_box(
'postdata_biography_meta_box',
'Связанная биография',
'postdata_biography_meta_box_html',
'postdaty',
'side',
'default'
);
}
add_action('add_meta_boxes', 'add_postdata_biography_meta_box');
// HTML метабокса
function postdata_biography_meta_box_html($post) {
$related_post_id = get_post_meta($post->ID, '_postdata_related_biography', true);
wp_nonce_field('postdata_biography_nonce', 'postdata_biography_nonce_field');
// Получаем посты только из рубрики 10723
$biographies = get_posts(array(
'post_type' => 'post',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'cat' => 10723 // ID рубрики
));
?>
<label for="postdata_related_biography">ID или выбор поста:</label>
<input type="number" name="postdata_related_biography_id"
value="<?php echo esc_attr($related_post_id); ?>"
placeholder="Введите ID поста" style="width:100%; margin-bottom:10px;">
<select name="postdata_related_biography" style="width:100%;">
<option value="">-- Или выберите из списка --</option>
<?php foreach($biographies as $bio): ?>
<option value="<?php echo $bio->ID; ?>" <?php selected($related_post_id, $bio->ID); ?>>
<?php echo esc_html($bio->post_title); ?> (ID: <?php echo $bio->ID; ?>)
</option>
<?php endforeach; ?>
</select>
<p style="font-size:11px; color:#666; margin-top:5px;">
Показаны только посты из рубрики биографий
</p>
<?php
}
// Сохранение связи (без изменений)
function save_postdata_biography_meta($post_id) {
if (!isset($_POST['postdata_biography_nonce_field']) ||
!wp_verify_nonce($_POST['postdata_biography_nonce_field'], 'postdata_biography_nonce')) {
return;
}
$biography_id = '';
if (!empty($_POST['postdata_related_biography_id'])) {
$biography_id = sanitize_text_field($_POST['postdata_related_biography_id']);
} elseif (!empty($_POST['postdata_related_biography'])) {
$biography_id = sanitize_text_field($_POST['postdata_related_biography']);
}
update_post_meta($post_id, '_postdata_related_biography', $biography_id);
}
add_action('save_post', 'save_postdata_biography_meta');