Wie ändere ich den Beitragsautor, wenn der Beitrag veröffentlicht wird?

Ich wollte den Autor wechseln, wenn ein Beitrag vom Entwurf zum veröffentlichen wechselt. Ich habe $_GET['auth_id'] Variable im Post-Bearbeitungsbildschirm wie ...wp-admin/post.php?post=53&action=edit&auth_id=5 . Ich habe save_post hook ausprobiert, um den Postautor wie unten zu ändern

 function change_pos_auth($post_id){ if ( ! wp_is_post_revision( $post_id ) ){ // unhook this function so it doesn't loop infinitely remove_action('save_post','change_pos_auth'); if ( isset($_GET['auth_id']) ) { $args = array('ID'=>$post_id,'post_author'=>$_GET['auth_id']); // update the post, which calls save_post again wp_update_post( $args ); } // re-hook this function add_action('save_post','change_pos_auth'); } } 

Dies funktioniert möglicherweise nicht, da möglicherweise keine $_GET Variablen vorhanden sind. Ich habe versucht, den aktuellen Benutzer dazu zu bringen, sie zum Autor zu machen

 function change_pos_auth($post_id){ if ( ! wp_is_post_revision( $post_id ) ){ // unhook this function so it doesn't loop infinitely remove_action('save_post','change_pos_auth'); if ( $last_user = get_post_meta( $post_id, '_edit_last', true) ) { $args = array('ID'=>$post_id,'post_author'=>$last_user); // update the post, which calls save_post again wp_update_post( $args ); } // re-hook this function add_action('save_post','change_pos_auth'); } } 

Oben funktioniert auch nicht. Die Hauptidee ist, dass es ein Frage- und Antworttyp ist. Der Autor, der zuerst die Frage in admin beantwortet, wird der Autor des Beitrags. Die Frage wird standardmäßig von admin gestellt. Also versuche ich den Autor beim Speichern zu ändern, wenn er veröffentlicht wird. Wenn der Beitrag veröffentlicht wird, erlaube ich anderen Autoren nicht, den Bearbeitungsbildschirm zu bearbeiten. Ich werde auf eine andere Seite redirect und sagen, dass jemand bereits darauf geantwortet hat.

Irgendeine Hilfe?

Solutions Collecting From Web of "Wie ändere ich den Beitragsautor, wenn der Beitrag veröffentlicht wird?"

Aus dem Code, den Sie dort gepostet haben, sieht es nicht so aus, als würden Sie die function zu save_post außerhalb Ihrer function save_post .

 function change_pos_auth($post_id){ if ( ! wp_is_post_revision( $post_id ) ){ // unhook this function so it doesn't loop infinitely remove_action('save_post','change_pos_auth'); if ( isset($_GET['auth_id']) ) { $args = array('ID'=>$post_id,'post_author'=>$_GET['auth_id']); // update the post, which calls save_post again wp_update_post( $args ); } // re-hook this function add_action('save_post','change_pos_auth'); } } add_action('save_post', 'change_pos_auth'); 

Der Rest des Codes sieht gut aus, wenn $ _GET [‘auth_id’] ausgefüllt wird.

NB: Vergessen Sie nicht, diesen Wert zu bereinigen, bevor Sie ihn in die database eingeben.