Добрый день.
Создал custom post type - ads и в нем таксономию - cats.
В соответствии с
вывожу форму на странице [ public-form post_type="ads" ],
в functions.php добавил фильтр для вывода таксономий, в форме все прекрасно выводится.
Но при публикации таксономия не назначается, в админке запись без назначенной таксономии.
Также небольшая проблема с выводом полей публикации. Они просто не выводятся при указании post_type в форме (выводятся только при использовании стандартного [ public-form ] без параметров). В админке "выводить поля автоматически" не срабатывает. Эту проблему решил добавлением полей через functions.php, но осадочек остается.
Плагин последней версии, другие плагины отключал для тестов.
Полный пример создания формы публикации для произвольного типа записи с таксономией и произвольными полями:
add_filter('taxonomy_public_form_rcl','add_taxonomy_adv'); function add_taxonomy_adv($tax){ if (!isset($tax['advertisement'])) $tax['advertisement'] = 'adv-category'; return $tax; } add_filter('pre_update_postdata_rcl','add_publicdata_advertisement_rcl',10,2); function add_publicdata_advertisement_rcl($postdata,$data){ if(!$_POST['cats']||$data->post_type!='advertisement') return $postdata; $cats = get_terms('adv-category'); $term_l = new Rcl_Edit_Terms_List(); $new_cat = $term_l->get_terms_list($cats,$_POST['cats']); $postdata['tax_input']['adv-category'] = $new_cat; return $postdata; } add_action('admin_menu', 'add_edit_page_custom_fields',30); function add_edit_page_custom_fields(){ add_submenu_page( 'manage-wprecall', 'Произвольные поля', 'Произвольные поля', 'manage_options', 'manage-fields-my-post-type', 'page_fields_my_custom_type'); } function page_fields_my_custom_type(){ rcl_sortable_scripts(); include_once RCL_PATH.'functions/rcl_editfields.php'; $f_edit = new Rcl_EditFields('advertisement'); if($f_edit->verify()) $fields = $f_edit->update_fields(); $fields = '<h2>Произвольные поля для объявлений</h2>'; $fields .= $f_edit->edit_form(); echo $fields; } add_action('admin_init', 'add_admin_fields_post_type_rcl', 1); function add_admin_fields_post_type_rcl() { add_meta_box( 'custom_fields_editor_post', 'Произвольные поля объявлений', 'custom_fields_list_posteditor_rcl', 'advertisement', 'normal', 'high' ); }
В ближайшее время я пересмотрю порядок работы с этим функционалом в сторону его упрощения и перепишу инструкцию, сейчас она похоже не совсем корректна.
Андрей CS сказал(а)
не понял, что за реализацию через дополнение публикаций? Приведенный выше код полностью опирается на дополнение публикаций
Имеется в виду, чтобы ничего не приходилось дописывать в файле функций. Произвольные поля для формы ID 1 создаю - не выводятся для custom post type, только для категорий по умолчанию.
И хотелось бы в шоткоде указать таксономию, например, tax="taxonomy_name". Сейчас все это работает только при прописывании в functions.php.
P.S.: Это связано косвенно с вышеизложенным, но как сделать, чтобы в личном кабинете - вкладка Публикации выводила записи из моих custom post types? На странице публикации учет публикаций ведется (думаю, там стоит простой подсчет постов со статусом publish у автора).
Как я уже написал выше я буду работать над тем, чтобы для формирования формы публикации произвольного типа записи не приходилось дополнительно указывать его таксономию через файл функций, но работа с произвольными полями для произвольного типа записи потребуется работы с кодом. Вышеприведенный код в том числе создает и выводит страницу произвольных полей для произвольного типа записей, не надо пытаться создавать произвольные поля для своего типа записи через настройки произвольных полей записей типа post. Код выше уже создал отдельную страницу произвольных полей для вашего типа записи вот с ними и работайте.