Hinzufügen / Entfernen von Tags im Frontend programmgesteuert

Ich habe einen Link in der Frontend-Symbolleiste erstellt, um einen Beitrag zu erstellen (Hinzufügen des Tags ‘featured’). Es funktioniert OK Hinzufügen oder Entfernen, aber das Problem zeigt den Beitrag. Wenn Sie das Tag entfernen und dann the_tags () oder has_tags () für die Vorlage verwenden, scheint der Post immer noch vorhanden zu sein. Ich muss die Seite aktualisieren, um das Ergebnis zu sehen.

Beim Hinzufügen des Tags funktioniert alles wie erwartet: Der Begriff wird hinzugefügt und das Tag wird mit einem einfachen Klick angezeigt.

Was mache ich falsch? Könnte der Aktionshaken sein? Gibt es irgendeine Art von Cache?

function toolbar_add_link( $wp_admin_bar ) { if ( is_single() ) { $title = ''; $url = ''; if ( has_tag( 'featured' ) ) { $title = ' ' . __( 'No destacar', 'the_textdomain' ); $url = wp_nonce_url( add_query_arg( 'the_action', 'remove_feature_post' ), 'prefix-remove_feature_post' ); } else { $title = ' ' . __( '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' ); 

Solutions Collecting From Web of "Hinzufügen / Entfernen von Tags im Frontend programmgesteuert"