Домой Wp-Recall WP-Recall: Проблемы и решения Кастомные таксономии в форме публикации неверно отображаются
7ответ(ов) в теме
roma.hitryy
не в сети 4 года
На сайте с 14.08.2020
Участник
Тем 7
Сообщения 16
1
12:36
Версия WP-Recall: 16.20.2

Приветствую,
благодарю за проделанную работу - очень мощный функционал.
По форме публикации у всплывает такой неприятный момент:
При добавлении кастомной таксономии в форму, выбираю отображать выпадающим списоком, но, все равно отображаются чекбоксами. И после сохранения пропадает возможность выбора (выпадающий список, множественный выбор, чекбокс) - скрин ниже. Интересно, что основная таксономия ведет себя по другому - там все в порядке.

Спасибо!

после сохранения формы публикации

Редакции сообщения
14.08.2020 12:53roma.hitryyПричина: не указано
0
Андрей CS
не в сети 46 минут
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
2
18:33

изначально это поле было в блоке неактивных полей?
можете сюда скинуть код, которым вы зарегистрировали таксономию? я проверю на тестовом сайте

0
roma.hitryy
не в сети 4 года
На сайте с 14.08.2020
Участник
Тем 7
Сообщения 16
3
09:48

Андрей CS сказал(а)
изначально это поле было в блоке неактивных полей?
можете сюда скинуть код, которым вы зарегистрировали таксономию? я проверю на тестовом сайте

Изначально этого поля не было в блоке неактивных, я его создал, указав MetaKey таксономии (taxonomy-ads_countries).
Регистрировал с помощью плагине CPT UI, ниже привожу код, который он сгенерировал.

Хочу добваить, что таксономия "Категории" был добавлена вместе с Post Type: Объявления, тоесть была создана еще до создания формы, и это поле было автоматически сгенерировано, и отображается как нужно - выпадающим списком. А таксономия "Страны" была добавлена позже, и с ней такая вот беда.

Спасибо за готовность помочь!

function cptui_register_my_cpts() {

	/**
	 * Post Type: Объявления.
	 */

	$labels = [
		"name" => __( "Объявления", "neve" ),
		"singular_name" => __( "Объявление", "neve" ),
		"menu_name" => __( "Объявления", "neve" ),
		"all_items" => __( "Все объявления", "neve" ),
		"add_new" => __( "Добавить новое", "neve" ),
		"add_new_item" => __( "Добавить объявление", "neve" ),
		"edit_item" => __( "Редактировать объявление", "neve" ),
		"new_item" => __( "Новое объявление", "neve" ),
		"view_item" => __( "Смотреть объявление", "neve" ),
		"view_items" => __( "Смотреть объявления", "neve" ),
		"search_items" => __( "Найти объявление", "neve" ),
		"not_found" => __( "Объявлений не найдено", "neve" ),
		"not_found_in_trash" => __( "Объявлений нет в корзине", "neve" ),
		"parent" => __( "Родительское объявление:", "neve" ),
		"featured_image" => __( "Featured image для Объявления", "neve" ),
		"set_featured_image" => __( "Установить featured image для Объявленя", "neve" ),
		"remove_featured_image" => __( "Remove featured image для Объявленя", "neve" ),
		"use_featured_image" => __( "Использовать как featured image для Объявленя", "neve" ),
		"archives" => __( "Архив объявлений", "neve" ),
		"insert_into_item" => __( "Вставить в объявление", "neve" ),
		"uploaded_to_this_item" => __( "Загрузить к объявлению", "neve" ),
		"filter_items_list" => __( "Фидльтровать объявления", "neve" ),
		"items_list_navigation" => __( "Навигация по объявлениям", "neve" ),
		"items_list" => __( "Список объявлений", "neve" ),
		"attributes" => __( "Атрибуты  объявлений", "neve" ),
		"name_admin_bar" => __( "Объявление", "neve" ),
		"item_published" => __( "Объявление опубликовано", "neve" ),
		"item_published_privately" => __( "Объявление опубликовано приватно", "neve" ),
		"item_reverted_to_draft" => __( "Объявление откачено до черновика", "neve" ),
		"item_scheduled" => __( "Объявление scheduled", "neve" ),
		"item_updated" => __( "Объявление обновлено", "neve" ),
		"parent_item_colon" => __( "Родительское объявление:", "neve" ),
	];

	$args = [
		"label" => __( "Объявления", "neve" ),
		"labels" => $labels,
		"description" => "",
		"public" => true,
		"publicly_queryable" => true,
		"show_ui" => true,
		"show_in_rest" => true,
		"rest_base" => "",
		"rest_controller_class" => "WP_REST_Posts_Controller",
		"has_archive" => "ads",
		"show_in_menu" => true,
		"show_in_nav_menus" => true,
		"delete_with_user" => true,
		"exclude_from_search" => false,
		"capability_type" => "post",
		"map_meta_cap" => true,
		"hierarchical" => false,
		"rewrite" => [ "slug" => "ads", "with_front" => true ],
		"query_var" => true,
		"supports" => [ "title", "editor", "thumbnail", "custom-fields", "page-attributes" ],
		"taxonomies" => [ "ads_category" ],
	];

	register_post_type( "ads", $args );
}

add_action( 'init', 'cptui_register_my_cpts' );


function cptui_register_my_taxes() {

	/**
	 * Taxonomy: Категории.
	 */

	$labels = [
		"name" => __( "Категории", "neve" ),
		"singular_name" => __( "Категория", "neve" ),
		"menu_name" => __( "Категории", "neve" ),
		"all_items" => __( "All Категории", "neve" ),
		"edit_item" => __( "Edit Категория", "neve" ),
		"view_item" => __( "View Категория", "neve" ),
		"update_item" => __( "Update Категория name", "neve" ),
		"add_new_item" => __( "Add new Категория", "neve" ),
		"new_item_name" => __( "New Категория name", "neve" ),
		"parent_item" => __( "Parent Категория", "neve" ),
		"parent_item_colon" => __( "Parent Категория:", "neve" ),
		"search_items" => __( "Search Категории", "neve" ),
		"popular_items" => __( "Popular Категории", "neve" ),
		"separate_items_with_commas" => __( "Separate Категории with commas", "neve" ),
		"add_or_remove_items" => __( "Add or remove Категории", "neve" ),
		"choose_from_most_used" => __( "Choose from the most used Категории", "neve" ),
		"not_found" => __( "No Категории found", "neve" ),
		"no_terms" => __( "No Категории", "neve" ),
		"items_list_navigation" => __( "Категории list navigation", "neve" ),
		"items_list" => __( "Категории list", "neve" ),
	];

	$args = [
		"label" => __( "Категории", "neve" ),
		"labels" => $labels,
		"public" => true,
		"publicly_queryable" => true,
		"hierarchical" => true,
		"show_ui" => true,
		"show_in_menu" => true,
		"show_in_nav_menus" => true,
		"query_var" => true,
		"rewrite" => [ 'slug' => 'ads_category', 'with_front' => true, ],
		"show_admin_column" => false,
		"show_in_rest" => true,
		"rest_base" => "ads_category",
		"rest_controller_class" => "WP_REST_Terms_Controller",
		"show_in_quick_edit" => false,
		];
	register_taxonomy( "ads_category", [ "ads" ], $args );

	/**
	 * Taxonomy: Страны.
	 */

	$labels = [
		"name" => __( "Страны", "neve" ),
		"singular_name" => __( "Страна", "neve" ),
		"menu_name" => __( "Страны", "neve" ),
		"all_items" => __( "All Страны", "neve" ),
		"edit_item" => __( "Edit Страна", "neve" ),
		"view_item" => __( "View Страна", "neve" ),
		"update_item" => __( "Update Страна name", "neve" ),
		"add_new_item" => __( "Add new Страна", "neve" ),
		"new_item_name" => __( "New Страна name", "neve" ),
		"parent_item" => __( "Parent Страна", "neve" ),
		"parent_item_colon" => __( "Parent Страна:", "neve" ),
		"search_items" => __( "Search Страны", "neve" ),
		"popular_items" => __( "Popular Страны", "neve" ),
		"separate_items_with_commas" => __( "Separate Страны with commas", "neve" ),
		"add_or_remove_items" => __( "Add or remove Страны", "neve" ),
		"choose_from_most_used" => __( "Choose from the most used Страны", "neve" ),
		"not_found" => __( "No Страны found", "neve" ),
		"no_terms" => __( "No Страны", "neve" ),
		"items_list_navigation" => __( "Страны list navigation", "neve" ),
		"items_list" => __( "Страны list", "neve" ),
	];

	$args = [
		"label" => __( "Страны", "neve" ),
		"labels" => $labels,
		"public" => true,
		"publicly_queryable" => true,
		"hierarchical" => false,
		"show_ui" => true,
		"show_in_menu" => true,
		"show_in_nav_menus" => true,
		"query_var" => true,
		"rewrite" => [ 'slug' => 'ads_countries', 'with_front' => true, ],
		"show_admin_column" => false,
		"show_in_rest" => true,
		"rest_base" => "ads_countries",
		"rest_controller_class" => "WP_REST_Terms_Controller",
		"show_in_quick_edit" => false,
		];
	register_taxonomy( "ads_countries", [ "ads" ], $args );
}
add_action( 'init', 'cptui_register_my_taxes' );


0
Андрей CS
не в сети 46 минут
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
4
09:54

roma.hitryy сказал(а)
я его создал, указав MetaKey таксономии (taxonomy-ads_countries)

нет, такого делать не следовало, поле для зарегистрированной таксономии должно создаваться автоматически
в массиве аргументов для регистрации типа записи у вас указана только одна таксономия

"taxonomies" => [ "ads_category" ],

надо было указать обе, ads_countries в том числе.
Внесите предложенное изменение в код, затем пробуйте перетащить созданное поле в блок неактивных полей, пересохраните поля, затем перетащите поле таксономии обратно.

0
roma.hitryy
не в сети 4 года
На сайте с 14.08.2020
Участник
Тем 7
Сообщения 16
5
11:11

Внес изменения (код ниже). Деактивировал/активировал - все равно отображается радиобатонами, или чекбоксами (если выбран множественный выбор).
Добавил новую таксономию (она в приведенном коде присутствует), поле добавилось в неактивных. Перенес - а там та же история, описанная выше, нет возможности отобразить выпадающим списком.

function cptui_register_my_cpts() {

  /**
   * Post Type: Объявления.
   */

  $labels = [
    "name" => __( "Объявления", "neve" ),
    "singular_name" => __( "Объявление", "neve" ),
    "menu_name" => __( "Объявления", "neve" ),
    "all_items" => __( "Все объявления", "neve" ),
    "add_new" => __( "Добавить новое", "neve" ),
    "add_new_item" => __( "Добавить объявление", "neve" ),
    "edit_item" => __( "Редактировать объявление", "neve" ),
    "new_item" => __( "Новое объявление", "neve" ),
    "view_item" => __( "Смотреть объявление", "neve" ),
    "view_items" => __( "Смотреть объявления", "neve" ),
    "search_items" => __( "Найти объявление", "neve" ),
    "not_found" => __( "Объявлений не найдено", "neve" ),
    "not_found_in_trash" => __( "Объявлений нет в корзине", "neve" ),
    "parent" => __( "Родительское объявление:", "neve" ),
    "featured_image" => __( "Featured image для Объявления", "neve" ),
    "set_featured_image" => __( "Установить featured image для Объявленя", "neve" ),
    "remove_featured_image" => __( "Remove featured image для Объявленя", "neve" ),
    "use_featured_image" => __( "Использовать как featured image для Объявленя", "neve" ),
    "archives" => __( "Архив объявлений", "neve" ),
    "insert_into_item" => __( "Вставить в объявление", "neve" ),
    "uploaded_to_this_item" => __( "Загрузить к объявлению", "neve" ),
    "filter_items_list" => __( "Фидльтровать объявления", "neve" ),
    "items_list_navigation" => __( "Навигация по объявлениям", "neve" ),
    "items_list" => __( "Список объявлений", "neve" ),
    "attributes" => __( "Атрибуты  объявлений", "neve" ),
    "name_admin_bar" => __( "Объявление", "neve" ),
    "item_published" => __( "Объявление опубликовано", "neve" ),
    "item_published_privately" => __( "Объявление опубликовано приватно", "neve" ),
    "item_reverted_to_draft" => __( "Объявление откачено до черновика", "neve" ),
    "item_scheduled" => __( "Объявление scheduled", "neve" ),
    "item_updated" => __( "Объявление обновлено", "neve" ),
    "parent_item_colon" => __( "Родительское объявление:", "neve" ),
  ];

  $args = [
    "label" => __( "Объявления", "neve" ),
    "labels" => $labels,
    "description" => "",
    "public" => true,
    "publicly_queryable" => true,
    "show_ui" => true,
    "show_in_rest" => true,
    "rest_base" => "",
    "rest_controller_class" => "WP_REST_Posts_Controller",
    "has_archive" => "ads",
    "show_in_menu" => true,
    "show_in_nav_menus" => true,
    "delete_with_user" => true,
    "exclude_from_search" => false,
    "capability_type" => "post",
    "map_meta_cap" => true,
    "hierarchical" => false,
    "rewrite" => [ "slug" => "ads", "with_front" => true ],
    "query_var" => true,
    "supports" => [ "title", "editor", "thumbnail", "custom-fields", "page-attributes" ],
    "taxonomies" => [ "ads_category", "ads_countries", "ads_countries_reg" ],
  ];

  register_post_type( "ads", $args );
}

add_action( 'init', 'cptui_register_my_cpts' );


function cptui_register_my_taxes() {

  /**
   * Taxonomy: Категории.
   */

  $labels = [
    "name" => __( "Категории", "neve" ),
    "singular_name" => __( "Категория", "neve" ),
    "menu_name" => __( "Категории", "neve" ),
    "all_items" => __( "All Категории", "neve" ),
    "edit_item" => __( "Edit Категория", "neve" ),
    "view_item" => __( "View Категория", "neve" ),
    "update_item" => __( "Update Категория name", "neve" ),
    "add_new_item" => __( "Add new Категория", "neve" ),
    "new_item_name" => __( "New Категория name", "neve" ),
    "parent_item" => __( "Parent Категория", "neve" ),
    "parent_item_colon" => __( "Parent Категория:", "neve" ),
    "search_items" => __( "Search Категории", "neve" ),
    "popular_items" => __( "Popular Категории", "neve" ),
    "separate_items_with_commas" => __( "Separate Категории with commas", "neve" ),
    "add_or_remove_items" => __( "Add or remove Категории", "neve" ),
    "choose_from_most_used" => __( "Choose from the most used Категории", "neve" ),
    "not_found" => __( "No Категории found", "neve" ),
    "no_terms" => __( "No Категории", "neve" ),
    "items_list_navigation" => __( "Категории list navigation", "neve" ),
    "items_list" => __( "Категории list", "neve" ),
  ];

  $args = [
    "label" => __( "Категории", "neve" ),
    "labels" => $labels,
    "public" => true,
    "publicly_queryable" => true,
    "hierarchical" => true,
    "show_ui" => true,
    "show_in_menu" => true,
    "show_in_nav_menus" => true,
    "query_var" => true,
    "rewrite" => [ 'slug' => 'ads_category', 'with_front' => true, ],
    "show_admin_column" => false,
    "show_in_rest" => true,
    "rest_base" => "ads_category",
    "rest_controller_class" => "WP_REST_Terms_Controller",
    "show_in_quick_edit" => false,
    ];
  register_taxonomy( "ads_category", [ "ads" ], $args );

  /**
   * Taxonomy: Страны.
   */

  $labels = [
    "name" => __( "Страны", "neve" ),
    "singular_name" => __( "Страна", "neve" ),
    "menu_name" => __( "Страны", "neve" ),
    "all_items" => __( "All Страны", "neve" ),
    "edit_item" => __( "Edit Страна", "neve" ),
    "view_item" => __( "View Страна", "neve" ),
    "update_item" => __( "Update Страна name", "neve" ),
    "add_new_item" => __( "Add new Страна", "neve" ),
    "new_item_name" => __( "New Страна name", "neve" ),
    "parent_item" => __( "Parent Страна", "neve" ),
    "parent_item_colon" => __( "Parent Страна:", "neve" ),
    "search_items" => __( "Search Страны", "neve" ),
    "popular_items" => __( "Popular Страны", "neve" ),
    "separate_items_with_commas" => __( "Separate Страны with commas", "neve" ),
    "add_or_remove_items" => __( "Add or remove Страны", "neve" ),
    "choose_from_most_used" => __( "Choose from the most used Страны", "neve" ),
    "not_found" => __( "No Страны found", "neve" ),
    "no_terms" => __( "No Страны", "neve" ),
    "items_list_navigation" => __( "Страны list navigation", "neve" ),
    "items_list" => __( "Страны list", "neve" ),
  ];

  $args = [
    "label" => __( "Страны", "neve" ),
    "labels" => $labels,
    "public" => true,
    "publicly_queryable" => true,
    "hierarchical" => false,
    "show_ui" => true,
    "show_in_menu" => true,
    "show_in_nav_menus" => true,
    "query_var" => true,
    "rewrite" => [ 'slug' => 'ads_countries', 'with_front' => true, ],
    "show_admin_column" => false,
    "show_in_rest" => true,
    "rest_base" => "ads_countries",
    "rest_controller_class" => "WP_REST_Terms_Controller",
    "show_in_quick_edit" => false,
    ];
  register_taxonomy( "ads_countries", [ "ads" ], $args );

/**
   * Taxonomy: Страна регистрации.
   */

  $labels = [
    "name" => __( "Страны", "neve" ),
    "singular_name" => __( "Страна", "neve" ),
    "menu_name" => __( "Страны", "neve" ),
    "all_items" => __( "All Страны", "neve" ),
    "edit_item" => __( "Edit Страна", "neve" ),
    "view_item" => __( "View Страна", "neve" ),
    "update_item" => __( "Update Страна name", "neve" ),
    "add_new_item" => __( "Add new Страна", "neve" ),
    "new_item_name" => __( "New Страна name", "neve" ),
    "parent_item" => __( "Parent Страна", "neve" ),
    "parent_item_colon" => __( "Parent Страна:", "neve" ),
    "search_items" => __( "Search Страны", "neve" ),
    "popular_items" => __( "Popular Страны", "neve" ),
    "separate_items_with_commas" => __( "Separate Страны with commas", "neve" ),
    "add_or_remove_items" => __( "Add or remove Страны", "neve" ),
    "choose_from_most_used" => __( "Choose from the most used Страны", "neve" ),
    "not_found" => __( "No Страны found", "neve" ),
    "no_terms" => __( "No Страны", "neve" ),
    "items_list_navigation" => __( "Страны list navigation", "neve" ),
    "items_list" => __( "Страны list", "neve" ),
  ];

  $args = [
    "label" => __( "Страна регистрации", "neve" ),
    "labels" => $labels,
    "public" => true,
    "publicly_queryable" => true,
    "hierarchical" => false,
    "show_ui" => true,
    "show_in_menu" => true,
    "show_in_nav_menus" => true,
    "query_var" => true,
    "rewrite" => [ 'slug' => 'ads_countries_reg', 'with_front' => true, ],
    "show_admin_column" => false,
    "show_in_rest" => true,
    "rest_base" => "ads_countries_reg",
    "rest_controller_class" => "WP_REST_Terms_Controller",
    "show_in_quick_edit" => false,
    ];
  register_taxonomy( "ads_countries_reg", [ "ads" ], $args );
}
add_action( 'init', 'cptui_register_my_taxes' );

0
Андрей CS
не в сети 46 минут
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16936
6
11:47

Потому что таксономия неиерархического типа, измените тип в массиве аргументов таксономии

"hierarchical" => true,

возможно, после изменения в коде придется снова переактивировать поле, поместив его в неактивную область.

0
roma.hitryy
не в сети 4 года
На сайте с 14.08.2020
Участник
Тем 7
Сообщения 16
7
13:14

Спасибо! Все так и есть.
Очень помогли

0
Вы не имеете права на публикацию сообщений в этой теме