mihdan
12/1/2017 - 1:14 PM

wp-default-category-to-cpt.php

<?php
/**
 * Добавить свои поля в настройки "Написание"
 *
 * @author Mikhail Kobzarev <mikhail@kobzarev.com>
 */
function teamrussia_add_option_field_to_writing_admin_page(){

	register_setting( 'writing', 'default_magazine_category' );
	register_setting( 'writing', 'default_news_category' );

	add_settings_field(
		'default_news_category',
		'Основная категория Новостей',
		'teamrussia_add_default_news_category_field',
		'writing',
		'default',
		array(
			'id' => 'default_news_category',
			'option_name' => 'default_news_category'
		)
	);

	add_settings_field(
		'default_magazine_category',
		'Основная категория Олимпийского журнала',
		'teamrussia_add_default_magazine_category_field',
		'writing',
		'default',
		array(
			'id' => 'default_magazine_category',
			'option_name' => 'default_magazine_category'
		)
	);
}
add_action( 'admin_menu', 'teamrussia_add_option_field_to_writing_admin_page' );

/**
 * Генерим дропдаун с категориями новостей
 *
 * @param array $val массив с идентификатором и имененм поля
 *
 * @author Mikhail Kobzarev <mikhail@kobzarev.com>
 */
function teamrussia_add_default_news_category_field( $val ) {
	wp_dropdown_categories( array(
		'hide_empty' => 0,
		'name' => $val['option_name'],
		'orderby' => 'name',
		'selected' => get_option( $val['option_name'] ),
		'taxonomy' => 'news_category',
	) );
}

/**
 * Генерим дропдаун с категориями олимпийского журнала
 *
 * @param array $val массив с идентификатором и имененм поля
 *
 * @author Mikhail Kobzarev <mikhail@kobzarev.com>
 */
function teamrussia_add_default_magazine_category_field( $val ) {
	wp_dropdown_categories( array(
		'hide_empty' => 0,
		'name' => $val['option_name'],
		'orderby' => 'name',
		'selected' => get_option( $val['option_name'] ),
		'taxonomy' => 'magazine_category',
	) );
}

/**
 * При сохранении поста Новостей
 * ставит дефолтную категорию, если не указана
 *
 * @param int $post_id идентификатор поста
 * @param WP_Post $post объект поста
 * @param bool $update флаг, что идет обновление поста
 *
 * @author Mikhail Kobzarev <mikhail@kobzarev.com>
 */
function teamrussia_save_post_news( $post_id, $post, $update ) {

	// Смотрим, какие категории указаны
	$categories = wp_get_object_terms( $post_id, 'news_category' );

	//Если никакие не указаны - ставим по умолчанию
	if ( ! $categories ) {
		wp_set_object_terms( $post_id, absint( get_option( 'default_news_category' ) ), 'news_category' );
	}
}

add_action( 'save_post_news', 'teamrussia_save_post_news', 10, 3 );

/**
 * При сохранении поста Олимпийского журнала
 * ставит дефолтную категорию, если не указана
 *
 * @param int $post_id идентификатор поста
 * @param WP_Post $post объект поста
 * @param bool $update флаг, что идет обновление поста
 *
 * @author Mikhail Kobzarev <mikhail@kobzarev.com>
 */
function teamrussia_save_post_magazine( $post_id, $post, $update ) {

	// Смотрим, какие категории указаны
	$categories = wp_get_object_terms( $post_id, 'magazine_category' );

	//Если никакие не указаны - ставим по умолчанию
	if ( ! $categories ) {
		wp_set_object_terms( $post_id, absint( get_option( 'default_magazine_category' ) ), 'magazine_category' );
	}
}

add_action( 'save_post_magazine', 'teamrussia_save_post_magazine', 10, 3 );