Добавить / удалить теги по интерфейсу программно

Я создал ссылку на панели инструментов frontend, чтобы добавить сообщение (добавив тег 'featured'). Он работает нормально, добавляя или удаляя, но проблема показывает сообщение. При удалении тега, а затем с помощью the_tags () или has_tags () в шаблоне, сообщение все равно похоже на него; Я должен обновить страницу, чтобы увидеть результат.

Но при добавлении тега все работает так, как ожидалось: этот термин добавляется, и тег отображается с простым кликом.

Что я делаю не так? Может быть, крюк действия? Есть ли какой-либо тип кеша?

function toolbar_add_link( $wp_admin_bar ) { if ( is_single() ) { $title = ''; $url = ''; if ( has_tag( 'featured' ) ) { $title = '<span style="top: 2px;" class="ab-icon dashicons-heart"></span> ' . __( 'No destacar', 'the_textdomain' ); $url = wp_nonce_url( add_query_arg( 'the_action', 'remove_feature_post' ), 'prefix-remove_feature_post' ); } else { $title = '<span style="top: 2px;" class="ab-icon dashicons-heart"></span> ' . __( 'Destacar evento', 'the_textdomain' ); $url = wp_nonce_url( add_query_arg( 'the_action', 'add_feature_post' ), 'prefix-add_feature_post' ); } $args = array( 'id' => 'feature-post', 'title' => $title, 'href' => $url, 'meta' => array( 'class' => 'dashicons-edit' ), ); $wp_admin_bar->add_node( $args ); } } add_action( 'admin_bar_menu', 'toolbar_add_link', 999 ); function add_remove_tags() { global $post; $action = isset( $_GET['the_action'] ) ? $_GET['the_action'] : ''; $wpnonce_action = 'prefix-' . $action; if ( ! ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], $wpnonce_action ) && ( current_user_can( 'editor' ) || current_user_can( 'administrator' ) ) ) ) { //echo 'invalid nonce'; return; } $term = term_exists( 'featured', 'post_tag '); $tag_id = null; if ( is_array( $term ) ) { $tag_id = (int) $term['term_id']; } /* * If this was coming from the database or another source, we would need to make sure * these where integers: $cat_ids = array_map( 'intval', $cat_ids ); $cat_ids = array_unique( $cat_ids ); */ if ( $_GET['the_action'] === 'add_feature_post' ) { wp_add_object_terms( $post->ID, $tag_id, 'post_tag' ); } elseif ( $_GET['the_action'] === 'remove_feature_post' ) { wp_remove_object_terms( $post->ID, $tag_id, 'post_tag' ); } } add_action( 'wp', 'add_remove_tags' );