Возникла необходимость создать страницу добавления поста не заходя в админку ВП.
Все бы ничего, но есть один момент – записи должны попадать в категории таксономии.
Категории к своей таксономии прикрутил с помощью кода:
function add_cat_advertisement() {
register_taxonomy('cat_advertisement',
array('advertisement'),
array(
'hierarchical' => false,
'labels' => array(
'name' => 'Категорії оголошення',
'singular_name' => 'Категорії оголошення',
'search_items' => 'Знайти категорію',
'popular_items' => 'Популярні категорії',
'all_items' => 'Всі платформи',
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => 'Редагувати категорію',
'update_item' => 'Оновити категорію',
'add_new_item' => 'Додати нову категорію',
'new_item_name' => 'Назва нової категорії',
'separate_items_with_commas' => 'Розділяйте категорії комами',
'add_or_remove_items' => 'Додати або видалити категорію',
'choose_from_most_used' => 'Вибрати з найбільш часто використовуваних категорій',
'menu_name' => 'Категорії оголошення'
),
'public' => true,
'show_in_nav_menus' => true,
'show_ui' => true,
'show_tagcloud' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'rewrite' => array(
'slug' => 'cat_adver',
'hierarchical' => true
),
)
);
}
add_action( 'init', 'add_cat_advertisement', 0 );
Создал форму для добавления поста:
<form action="<?php bloginfo('template_url'); ?>/add.php" method="post">
<label for="title">Заголовок: </label><input size="80" type="text" name="title" /><br />
<label>Текст: </label>
<?php
$settings = array(
'textarea_name' => 'description',
'textarea_rows' => 5,
'quicktags' => false,
'media_buttons' => false,
'dfw' => true,
'tinymce' => array(
'toolbar1'=> 'bold,italic,underline,bullist,numlist,undo,redo'
)
);
wp_editor($contentFromPage, 'editpost', $settings);
?>
<br>
Оберіть категорію:
<?php
$args = array(
'show_count' => 1,
'hide_empty' => 0,
'exclude' => '',
'selected' => 0,
'hierarchical' => 1,
'name' => 'cat',
'class' => 'postform',
'taxonomy' => 'cat_advertisement'
);
wp_dropdown_categories($args); ?>
<label class="lbl" for="name_author">Ім`я Автора оголошення:</label><br>
<input class="input-custom-field" name="name_author" id="name_author" placeholder="Ім`я Автора" value="<?php echo get_post_meta( $post->ID, 'name_author',true); ?>">
<label class="lbl" for="tel_advert">Контактний телефон:</label><br>
<input class="input-custom-field" name="tel_advert" id="tel_advert" placeholder="Контактний телефон" value="<?php echo get_post_meta( $post->ID, 'tel_advert',true); ?>">
<br /><input type="submit" name="send" value="Опублікувати" />
</form>
В форме отлично выводятся категории таксономии.
Есть файл обработчик:
<?php
/* Define these, So that WP functions work inside this file */
define('WP_USE_THEMES', false);
require( $_SERVER['DOCUMENT_ROOT'] .'/nd/wp-blog-header.php');
if(isset($_POST['send']) == '1') {
$post_title = $_POST['title'];
$post_category = $_POST['cat'];
$post_content = $_POST['description'];
$new_post = array(
'ID' => '',
'post_author' => $user->ID,
'post_category' => array($post_category),
'post_content' => $post_content,
'post_title' => $post_title,
'post_status' => 'publish'
);
$post_id = wp_insert_post($new_post);
update_post_meta( $post_id, 'name_author', $_POST['name_author'] );
update_post_meta( $post_id, 'tel_advert', $_POST['tel_advert'] );
// This will redirect you to the newly created post
$post = get_post($post_id);
wp_redirect($post->guid);
}
?>
Когда публикую запись – она попадает в дефолтные записи (category) и не прикрепляется ни к какой категории.
А вот в мою таксономию (advertisement) не хочет добавляться.
Подскажите, что не так делаю и куда копать?
Решил самостоятельно.
Если кому будет полезно, то в файл обработчик еще нужно добавить строки: