Wie aktualisiere ich das Benutzer-Meta-Feld anders als vom Profil?

Ich habe ein dynamisches Meta-Feld erstellt, das für jeden Post-Typ generiert wird. Ich habe Folgendes verwendet, um das Meta-Feld zu erstellen:

 'Course', 'status' => 'approve' ); $allposts = get_posts( $args ); foreach ( $allposts as $post ) { $course_name = $post->post_name; $post_course_meta = $_POST[$post->post_name]; $radio_status = get_user_meta( $user->ID, $course_name, true ); ?> <input type="radio" name="post_name; ?>" value="Did not start" checked="checked" />
<input type="radio" name="post_name; ?>" value="Started" checked="checked" />
<input type="radio" name="post_name; ?>" value="Finished" checked="checked" />

Und um es zu retten:

 function save_educadme_courses_for_user( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; } $args=array( 'post_type' => 'Course', 'status' => 'approve' ); $allposts = get_posts( $args ); foreach ( $allposts as $post ) { $course_name = $post->post_name; $post_course_meta = $_POST[$post->post_name]; update_user_meta( $user_id, $course_name, $post_course_meta ); }//end of master loop } 

Und zum Anzeigen und Speichern verwende ich

 add_action( 'show_user_profile', 'educadme_courses_for_user' ); add_action( 'edit_user_profile', 'educadme_courses_for_user' ); add_action( 'personal_options_update', 'save_educadme_courses_for_user' ); add_action( 'edit_user_profile_update', 'save_educadme_courses_for_user' ); 

Jetzt funktioniert alles gut, wenn ich über das Profil selbst aktualisieren wollte . Das will ich aber nicht machen.

Ich möchte in der Lage sein, auch über die Profil-Bearbeitungsseite zu bearbeiten, aber vor allem möchte ich das Meta-Feld auch aktualisieren können, indem ich eine Aktualisierungsfunktion mit Aktionen verknüpfe, die auf verschiedenen Teilen der Website ausgeführt werden. Wenn ich dies jedoch versuche, aktualisiert das Update , das ich über die externe function durchführe, den Wert des Funkgeräts nicht oder zumindest wenn ich die Profilseite öffne, speichert es den ursprünglichen Wert, den ich über das Profil eingestellt habe.

Zum Beispiel wollte ich diese function testen:

 function testtt() { if ( is_user_logged_in() ) { update_user_meta( $user_id, 'research-introduction', 'Finished' ); } } add_action( 'wp_footer', 'testtt' ); 

Aber nichts ist passiert! Der Wert (Optionsfeld), der über die Profilaktualisierungsseite überprüft wurde, ist weiterhin ausgewählt.

Ich habe ein bisschen Code geändert und konnte es andersherum funktionieren lassen, um Werte zu holen und zu aktualisieren, aber keinen Effekt zu haben, wenn es über die Profilseite bearbeitet wurde. Dies brachte mich auf die Frage, ob ich Updates in beide Richtungen zulassen oder verwenden kann. Wenn ja, was mache ich bitte falsch?

Vielen Dank!

Solutions Collecting From Web of "Wie aktualisiere ich das Benutzer-Meta-Feld anders als vom Profil?"