<?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 );