В основном вам нужны две вещи: wp_insert_term и некоторые функциональные возможности AJAX .
Из последней опции будет перенаправлен в список выбранной пользователем категории пост-категории.
На этом этапе вы можете инициировать ваш запрос AJAX.Я предлагаю вам присоединить слагы термина таксономии в виде атрибута данных к ссылке:
<a class="category_selection" href="#" data-taxonomy="tax_a" data-parentterm="parent_a" data-term="term_a">Cat A</a>
Вы можете привязать функцию jQuery к событию click:
$( document ).on( 'click', 'a.category_selection', function ( e ) {
var data = {
action: 'category_selection',
term: $( this ).data( 'term' ),
parent_term : $( this ).data( 'parentterm' ),
taxonomy = $( this ).data( 'taxonomy' ),
nonce: my_vars.ajax_nonce
};
$.ajax( {
type: 'POST',
url: my_vars.ajaxurl,
data: data,
async: true,
success: function ( response ) {
// Parse response
var returndata = JSON.parse( response );
$( '.container' ).html( returndata );
}
} );
});
Теперь вам нужна функция обратного вызова PHP, которую вы можете прикрепить к действию category_selection
.В этой функции вы добавите термин в свою категорию.
add_filter( 'wp_ajax_category_selection', 'add_term' );
add_filter( 'wp_ajax_nopriv_category_selection', 'add_term' );
function add_term() {
check_ajax_referer( 'my_ajax', 'nonce' );
$taxonomy = filter_input( INPUT_POST, 'taxonomy', FILTER_SANITIZE_STRING );
// Sanitize the other input variables
$newterm = wp_insert_term( $term, $taxonomy, array( 'parent' => $parent_term ) );
if ( ! is_wp_error( $newterm ) ) :
echo json_encode( array( 'Success' ) );
endif;
echo json_encode( array( 'Failure' ) );
exit;
}
Это должно дать вам приблизительный обзор того, как с ним можно обращаться.Это не предназначено для копирования и вставки, потому что некоторые вещи по-прежнему отсутствуют, например, создание одноразового номера AJAX или необходимого javascript-объекта my_vars
.Вы можете найти необходимую информацию в статье Кодекса, на которую я ссылался выше.