Intereting Posts
Возможность редактирования для подписчика Обновлять событие сообщения мета каждый день автоматически Как использовать виджет категории «Список плагинов WP» (!) С более чем одной категорией? Добавить дополнительную разметку в меню WP Настройка подменю admin появляется только тогда, когда я привязался к пользовательской ссылке «Paged» в WP_Query возвращает 0 сообщений Добавить мета-ввод, если оператор Как удалить параметр комментариев из панели wp-admin и изменить значок профиля Понимание детской темы WordPress пользовательской загрузки JS Система заказа через WordPress Плагин библиотеки для WordPress Как отображать содержимое во всплывающем окне при нажатии нескольких div? Панель инструментов редактора сообщений WordPress отсутствует сложный вопрос о отображаемом изображении Как отображать информацию о категории из пользовательского сообщения

Создание и перемещение терминов для таксономии

Я пытаюсь создать таксономию и терминальный интерфейс.

В настоящее время у меня есть:

<form id="updatetax" method="post"> <input name="term_name" type="text" value=""> <select name="tax_selection"> <?php $taxonomies = get_object_taxonomies( 'cpt_taxonomy', 'objects' ); ?> <option value="">Select an option</option> <?php foreach( $taxonomies as $taxonomy ) { echo '<option value="' . $taxonomy->name . '">' . $taxonomy->label . '</option>'; } ?> </select> <!-- I have a hidden input with the term ID and the current taxonomy if updating --> <input name="termID" value="<?php echo $_GET['termID']; ?>"> <input name="currentTax" value="<?php echo $_GET['currentTax']; ?>"> </form> 

Затем в представлении я получаю поля и пытаюсь обновить термин:

 <?php $term_args = array( 'name' => $_POST['term_name'], 'taxonomy' => $_POST['tax_selection'], 'term_id' => $_POST['termID'] ); wp_update_term( $_POST['termID'], $_POST['currentTax'], $term_args ); ?> 

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

Мне было интересно, что я делаю неправильно. Моя конечная цель – иметь возможность перемещать / обновлять термины между таксономиями, добавлять новые из вышеприведенной формы (путем выбора таксономии в поле выбора) и добавлять специальные метаданные.

wp_update_term() не изменяет таксономию. Он просто обновил существующую таксономию. Скажите ниже,

 $update = wp_update_term( 1, 'category', array( 'name' => 'Uncategorized Renamed', 'slug' => 'uncategorized-renamed' ) ); if ( ! is_wp_error( $update ) ) { echo 'Success!'; } 

Этот код находит категорию, для которой идентификатор равен 1, а затем обновляет его до имени и пули, передаваемых в качестве параметра. В контексте моей системы категория с идентификатором 1 не классифицируется. Поэтому он переименует его.

Для изменения таксономии терминов нет функции по умолчанию. Здесь я написал один для вас. Посмотрите ниже –

 function the_dramatist_change_terms_taxonomy( $term_id, $future_taxonomy ){ global $wpdb; $update = $wpdb->update( $wpdb->prefix . 'term_taxonomy', [ 'taxonomy' => $future_taxonomy ], [ 'term_taxonomy_id' => $term_id ], [ '%s' ], [ '%d' ] ); return $update; } 

Здесь $term_id – это идентификатор термина, для которого таксономия вы хотите изменить, а $future_taxonomy – это условия будущей таксономии. $future_taxonomy должно быть, должна быть такой, как «category» , «post_tag» или «any_other_taxonomy» . Он фактически обновляет значение базы данных напрямую. Поэтому будьте осторожны, прежде чем использовать его. Особенно осторожно, если у вашего термина есть родитель. Причина в том, что он в основном обновляет значение таксономии в таблице wp_terms_taxonomy , а не в другом. Для обновления терминов таксономии я не нашел лучшего варианта.

А для вставки терминов в таксономию вы можете использовать wp_insert_term( $term, $taxonomy, $args = array() ) . Таким образом, вы можете проверить, что, если желаемая таксономия существует или нет. Если он существует, обновите его, если он его не создал. Как ниже,

 $term = term_exists( 'Uncategorized', 'category' ); if ( $term !== 0 && $term !== null ) { the_dramatist_change_terms_taxonomy( $term->term_id, $future_taxonomy ) } else { wp_insert_term( '...All..The...Parameter..Here' ); }