Benutzerdefinierte Anwendertaxonomien schlagen fehl, wenn ich mehrere Taxonomien registriere

Ich habe eine Website mit Leuten aus verschiedenen Fachgebieten, und ich möchte sie mit benutzerdefinierten Taxonomien gruppieren können. Ich habe Justin Tadlocks Tutorial-Code genommen und es funktioniert gut, wenn ich eine Taxonomie registriert habe, aber wenn ich ein anderes registriere, beginnen sie sich merkwürdig zu verhalten. Für jetzt habe ich die Taxonomien “Beruf” und “Büro”. Ich habe fünf verschiedene Berufe und mehr als 20 Büros. Wenn ich einen Beruf auswähle und speichere, können zwei weitere überprüft werden, obwohl ich sie nicht überprüft habe.

Hier ist mein Code.

Könnte es ein Problem sein, wenn die Bedingungen gespeichert werden? Sollte es eine function sein, sie alle zu beherrschen oder sollten sie getrennte functionen haben wie jetzt?

EDIT: 400 Zeilen Code ist ein bisschen viel, sorry.

Was es tut, ist, dass es zwei Taxonomien registriert und sie dann an die Benutzerseiten “bindet”, anstatt sich an “Beiträge” zu binden, was es standardmäßig macht, und dann mit zwei multipliziert. Jede Taxonomie erhält für alles eine eigene function. Ich weiß nicht, ob es die Aufgabe ist, die Felder zu speichern, die die Ursache meiner Probleme sind, aber alles funktioniert gut, bis ich ein Benutzerprofil speichere.

Hier ist die function, die die Kontrollkästchen speichert.

function my_save_user_profession_terms( $user_id ) { $tax = get_taxonomy( 'profession' ); /* Make sure the current user can edit the user and assign terms before proceeding. */ if ( !current_user_can( 'edit_user', $user_id ) && current_user_can( $tax->cap->assign_terms ) ) return false; $term = $_POST['profession'] ; /* Sets the terms (we're just using a single term) for the user. */ wp_set_object_terms( $user_id, $term, 'profession', false); clean_object_term_cache( $user_id, 'profession' ); } add_action( 'personal_options_update', 'my_save_user_office_terms' ); add_action( 'edit_user_profile_update', 'my_save_user_office_terms' ); 

Und hier ist, wie ich meine Begriffe als Kontrollkästchen im Admin ausgeben:

 /* If there are any profession terms, loop through them and display checkboxes. */ if ( !empty( $terms ) ) { foreach ( $terms as $term ) { ?> <input type="checkbox" name="profession[]" id="profession-slug ); ?>" value="slug ); ?>" ID, 'profession', $term ) ); ?> /> <label for="profession-slug ); ?>">name; ?> 
<?php } }

Edit 2, Antwort hinzugefügt.

Solutions Collecting From Web of "Benutzerdefinierte Anwendertaxonomien schlagen fehl, wenn ich mehrere Taxonomien registriere"

Zum Glück fand ich eine einfache Lösung für dieses Problem. Bei der Ausgabe von Begriffen wie Kästchen / Radios / was auch immer, müssen wir dies ändern:

< ?php checked( true, is_object_in_term( $user->ID, 'YOUR-TAX', $term ) ); ?>

Zu diesem:

< ?php checked( true, is_object_in_term( $user->ID, 'YOUR-TAX', $term->term_id ) ); ?>

Dies ist von der function in meinem ursprünglichen Beitrag. In IHRE STEUER geben Sie den Namen Ihrer Taxonomie an.