@The_Last_Dot

Как добавить meta_box к произвольному типу записи в wordpress?

Добрый день!
Я добавил новый тип записи "Отзывы"
function register_post_type_reviews() {
    register_post_type("reviews", array(
        "label"  => null,
        "labels" => [
            "name"               => "Отзывы",
            "singular_name"      => "Отзыв",
            "add_new"            => "Добавить отзыв",
            "add_new_item"       => "Добавление отзыва",
            "edit_item"          => "Редактирование отзыва",
            "new_item"           => "Новый отзыв",
            "view_item"          => "Смотреть отзыв",
            "search_items"       => "Искать отзывы",
            "not_found"          => "Не найдено",
            "not_found_in_trash" => "Не найдено в корзине",
            "menu_name"          => "Отзывы",
        ],
        "description"            => "Отзывы",
        "exclude_from_search"    => false,
        "public"                 => true,
        "capability_type"        => "page",
        "hierarchical"           => false,
        "show_in_menu"           => null,
        "show_in_rest"           => null,
        "rest_base"              => null,
        "menu_position"          => null,
        "menu_icon"              => "dashicons-format-status",
        "supports"               => [
            "title",
            "editor"
        ],
        "has_archive"         => false,
        "rewrite"             => true,
        "query_var"           => true,
    ));
}
add_action("init", "register_post_type_reviews");

И пытаюсь добавить плашку, где можно будет выбрать рейтинг отзывы, если я захочу вручную его изменить
function sti_comment_stars_section_fields ($post) { 
	$value = get_post_meta($post->ID, 'comment_stars', 1); ?>

	<p>КОЛ-ВО ЗВЕЗД</p>
  	<input type="range" id="post_comment_stars_range" name="post_comment_stars_range" min="0" max="5" value="<?php echo $value; ?>" step="0.5" />
	<span style="padding-left: 10px"><?php echo $value; ?></span>
<?php }

function sti_post_comment_stars_section() {
	if (get_post_type(get_the_ID()) == 'reviews') {
		add_meta_box('post_comment_stars_section', 'Звезды', 'sti_comment_stars_section_fields', 'post', 'normal', 'high');
	}
}
add_action('add_meta_boxes', 'sti_post_comment_stars_section', 1);

function sti_comment_stars_section_fields_save( $post_id ) {
	if (!isset($_POST['post_comment_stars_range'])) {
		return;
	}
	
	if (!current_user_can('edit_post', $post_id)) {
		return;
	}

	$data = sanitize_text_field($_POST['post_comment_stars_range']);
	
	update_post_meta($post_id, 'comment_stars', $data);
}
add_action('save_post', 'sti_comment_stars_section_fields_save');

Проблема в том, что у меня не отображается даже сама плашка, тоесть не отрабатывается функция sti_comment_stars_section_fields (define( 'WP_DEBUG', true ); внутри данной функции также игнорится) Помогите, товарищи-программисты!!!
PS в дефолтных постах WP плашка отображается
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
Как вариант:
// add_meta_box('post_comment_stars_section', 'Звезды', 'sti_comment_stars_section_fields', 'post', 'normal', 'high');
add_meta_box('post_comment_stars_section', 'Звезды', 'sti_comment_stars_section_fields', 'reviews', 'normal', 'high');

Как предположение, но думаю, что 1 тоже должен работать:
// $value = get_post_meta($post->ID, 'comment_stars', 1); ?>
$value = get_post_meta($post->ID, 'comment_stars', true) ?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы