Intereting Posts
Где идут сообщения WordPress? WordPress meta_query и заказ по настраиваемому полю Хостинг WordPress перенесен с сервера Windows на Linux-сервер Добавление разных фонов для разных страниц Добавление кнопки на страницу магазина в WooCommerce Как я могу получить_контент в пользовательском ходоке? Добавьте столбец «Последний отредактирован» в таблицу списка типов сообщений Как вызвать функцию внутри страницы / сообщения, динамически генерировать контент? как сохранить несколько настраиваемых полей для публикации за один раз? wp_signon () не требует аутентификации пользователя Как загрузить css в нижнем колонтитуле Автоматический вход в систему с использованием Active Directory и проверки подлинности Windows Я сделал WordPress Multisite. И теперь все не отображается должным образом 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 ); ?> 

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

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

Solutions Collecting From Web of "Создание и перемещение терминов для таксономии"

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' ); }