Intereting Posts
Заказ пользовательского почтового типа с измененной датой и специальным полем для метаданных Кнопка вставить ссылку на передней панели wp_editor не работает Получить идентификатор сообщения из URL-адреса запроса Планирование сообщений в базе данных передача значения нескольких родителей в короткий код WP_QUERY цикл, смещение в аргументах и ​​paginate_links – могут ли они работать вместе? Могу ли я запускать настраиваемый php на определенных страницах в WordPress? Как правильно распечатать ошибку 404 без перенаправления? (т.е. сохранение текущего URL-адреса) Отображение сообщений в зависимости от количества комментариев и последних комментариев? Как я могу указать размер изображения, предоставленного the_content () ;? количество сообщений (общедоступных, частных, защищенных) по категориям Проблема с сохранением пользовательского типа сообщения при удалении редактора Как представить div только при обращении к index.php для / на отдельных страницах сообщений Утвердить комментарий? Как добавить код в Header.php в дочернюю тему?

ограничить выбор пользовательских таксономий одним?

У меня есть сайт с CPT (короткий для пользовательского типа сообщения) «bagp_deals» и пользовательские таксономии «ba_locations» и «ba_cats» в основном Его тип сообщения «Сделки» с «Местоположение» и «Категории» как иерархические таксономии. На экране редактирования по умолчанию я хочу ограничить выбор только одним из них (одним местом и одной категорией), и я пытаюсь сделать это с помощью JQuery, я заметил, что полевой таксономии ba_locations называется «tax_input [ba_locations] [] "и до сих пор у меня есть этот код:

jQuery("input[name=tax_input[ba_locations][]]").click(function () { selected = jQuery("input[name=tax_input[ba_locations][]]").filter(":checked").length; if (selected > 1){ jQuery("input[name=tax_input[ba_locations][]]").each(function () { jQuery(this).attr("checked", false); }); jQuery(this).attr("checked", true); } }); 

ведьма предполагает ограничить выбор флажка одним. По какой-то причине я не могу заставить это работать.

Вопрос

Поэтому вопрос в том, почему это не работает? или у вас есть лучшее решение, чтобы ограничить выбор только одним?

любая помощь приветствуется.

Обновить:

это рабочий код, который я использовал:

 jQuery("input[name=\"tax_input[ba_locations][]\"]").click(function () { selected = jQuery("input[name=\"tax_input[ba_locations][]\"]").filter(":checked").length; if (selected > 1){ jQuery("input[name=\"tax_input[ba_locations][]\"]").each(function () { jQuery(this).attr("checked", false); }); jQuery(this).attr("checked", true); } }); 

Solutions Collecting From Web of "ограничить выбор пользовательских таксономий одним?"

Вместо того, чтобы взломать его с помощью jQuery, более надежным решением было бы заменить мета-поле вашим собственным, на PHP.

Во всяком случае, проблема, скорее всего, связана с символами ['и'] в селекторе:

 "input[name=tax_input[ba_locations][]]" 

можно переписать как

 "input[name=tax_input\\[ba_locations\\]\\[\\]]" 

См. https://stackoverflow.com/questions/2786538/need-to-escape-a-special-character-in-a-jquery-selector-string

У меня есть php-решение для вас:

 add_filter('wp_terms_checklist_args', 'htmlandcms_select_one_category'); function htmlandcms_select_one_category($args) { if (isset($args['taxonomy']) && $args['taxonomy'] == 'category_portfolio') { $args['walker'] = new Walker_Category_Radios; $args['checked_ontop'] = false; } return $args; } class Walker_Category_Radios extends Walker { var $tree_type = 'category'; var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); function start_lvl( &$output, $depth = 0, $args = array() ) { $indent = str_repeat("\t", $depth); $output .= "$indent<ul class='children'>\n"; } function end_lvl( &$output, $depth = 0, $args = array() ) { $indent = str_repeat("\t", $depth); $output .= "$indent</ul>\n"; } function start_el( &$output, $category, $depth, $args, $id = 0 ) { extract($args); if ( empty($taxonomy) ) $taxonomy = 'category'; if ( $taxonomy == 'category' ) $name = 'post_category'; else $name = 'tax_input['.$taxonomy.']'; /** @var $popular_cats */ $class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : ''; /** @var $selected_cats */ $output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="radio" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), TRUE, FALSE ) . disabled( empty( $args['disabled'] ), FALSE, FALSE ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>'; } function end_el( &$output, $category, $depth = 0, $args = array() ) { $output .= "</li>\n"; } } 

Не уверен, что вы когда-нибудь нашли решение, но мне нужно было сделать то же самое. Я взял ваш jQuery и добавил цитаты для имени + сбежал от них. Кажется, все отлично работает для меня, поэтому спасибо за оригинальный jQuery 🙂

  jQuery("input[name=\"tax_input[location][]\"]").click(function () { selected = jQuery("input[name=\"tax_input[location][]\"]").filter(":checked").length; if (selected > 1){ jQuery("input[name=\"tax_input[location][]\"]").each(function () { jQuery(this).attr("checked", false); }); jQuery(this).attr("checked", true); } }); 

Мой учет таксономии назывался местоположением, а не ba_locations.

Это то, что я бросил в свои функции, но, похоже, я не ожидаю результатов.

 <?php add_action( 'admin_head', 'cat_sel' ); function cat_sel() { ?> <script type="text/javascript"> jQuery(document).ready(function($) { jQuery("input[name=\"tax_input[rooms][]\"]").click(function () { selected = jQuery("input[name=\"tax_input[rooms][]\"]").filter(":checked").length; if (selected > 1){ jQuery("input[name=\"tax_input[rooms][]\"]").each(function () { jQuery(this).attr("checked", false); }); jQuery(this).attr("checked", true); } }); }); </script> <?php } ?>