add postdate
This commit is contained in:
136
inc/postdate.php
Normal file
136
inc/postdate.php
Normal file
@@ -0,0 +1,136 @@
|
||||
<?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');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user