Benutzerdefinierter Titel für die Schnellbearbeitung

Ich habe einen benutzerdefinierten Post-Typ ohne Titelunterstützung eingerichtet und einen Code hinzugefügt, damit der Titel automatisch aus benutzerdefinierten Feldern ausgefüllt wird. Dies funktioniert hervorragend beim Erstellen oder Aktualisieren eines Posts auf der Post-Bearbeitungsseite. Das Problem ist, wenn ich den Post über das Schnellbearbeitungsmenü aktualisiere, geht der Titel zurück auf (kein Titel).

Würde jemand wissen, was ich in meinem Code ändern oder hinzufügen könnte, damit der Titel bei der Verwendung der Schnellbearbeitung erhalten bleibt?

Hier ist mein Code:

function kida_post_updated_func( $post_id ) { if ( wp_is_post_revision( $post_id ) || get_post_type($post_id) != 'plot_detail')return; remove_action( 'post_updated', 'kida_post_updated_func' ); $given = get_post_meta($id, 'wpcf-given', true); $givenslug = "given"; $nickname = get_post_meta($id, 'wpcf-nickname', true); $nicknameslug = "nickname"; $middle = get_post_meta($id, 'wpcf-middle', true); $middleslug ="middle"; $maiden = get_post_meta($id, 'wpcf-maiden-name', true); $maidenslug ="maiden-name"; $family = get_post_meta($id, 'wpcf-family', true); $familyslug = "family"; if(isset($_POST['wpcf'][$givenslug]) && !empty($_POST['wpcf'][$givenslug])){ $a = $_POST['wpcf'][$givenslug]; } if(isset($_POST['wpcf'][$nicknameslug]) && !empty($_POST['wpcf'][$nicknameslug])){ $b = $_POST['wpcf'][$nicknameslug]; $bb = '"'; } if(isset($_POST['wpcf'][$middleslug]) && !empty($_POST['wpcf'][$middleslug])){ $c = $_POST['wpcf'][$middleslug]; } if(isset($_POST['wpcf'][$maidenslug]) && !empty($_POST['wpcf'][$maidenslug])){ $d = $_POST['wpcf'][$maidenslug]; $dd = '('; $de = ')'; } if(isset($_POST['wpcf'][$familyslug]) && !empty($_POST['wpcf'][$familyslug])){ $e = $_POST['wpcf'][$familyslug]; } $v = $a . ' ' . $bb . $b . $bb . ' ' . $c . ' ' . $dd . $d . $de . ' ' . $e; $my_args = array( 'ID' => $post_id, 'post_title' => $v, 'post_name' => sanitize_title($v), ); // update the post, which calls save_post again $res = wp_update_post( $my_args, true ); add_action( 'post_updated', 'kida_post_updated_func' ); } add_action( 'post_updated', 'kida_post_updated_func' ); 

Solutions Collecting From Web of "Benutzerdefinierter Titel für die Schnellbearbeitung"

Danke an bcworkz auf wordpress.org ( https://wordpress.org/support/topic/custom-title-set-on-quick-edit/#post-8631035 ) schreiben:

Ich kann nicht 100% ig sicher sein, aber ich denke, es liegt daran, dass die benutzerdefinierten Felddaten nicht in $ _POST mit der Schnellbearbeitung gesendet werden, so dass der Titel als leeres Feld festgelegt wird. Ich denke, was Sie tun müssen, fügen Sie else Code für jedes benutzerdefinierte Feld mit dem Titel beteiligt, wo, wenn die $ _POST Daten fehlen, versuchen Sie, die Daten von Post-Meta, und wenn das nicht existiert, legen Sie das Titelfragment auf einige Standardwert. Völlig optional, aber Sie könnten prüfen, ob Sie die Aktion “pre_post_update” anstelle von “post_updated” verwenden, um den Titel zu ändern. Der Hauptvorteil besteht darin, dass zusätzliche Abfragen zum Speichern von Post-Daten gespeichert werden, da Sie die Daten vor dem Speichern ändern, sodass der Post nicht erneut gespeichert werden muss

Also habe ich die else-statement für jedes Titelfeld hinzugefügt. Wenn jemand versucht, das Gleiche zu erreichen, hier ist mein neuer Arbeitscode:

 function kida_post_updated_func( $post_id ) { if ( wp_is_post_revision( $post_id ) || get_post_type($post_id) != 'plot_detail')return; remove_action( 'post_updated', 'kida_post_updated_func' ); $given = get_post_meta($id, 'wpcf-given', true); $givenslug = "given"; $nickname = get_post_meta($id, 'wpcf-nickname', true); $nicknameslug = "nickname"; $middle = get_post_meta($id, 'wpcf-middle', true); $middleslug ="middle"; $maiden = get_post_meta($id, 'wpcf-maiden-name', true); $maidenslug ="maiden-name"; $family = get_post_meta($id, 'wpcf-family', true); $familyslug = "family"; if(isset($_POST['wpcf'][$givenslug]) && !empty($_POST['wpcf'][$givenslug])){ $a = $_POST['wpcf'][$givenslug]; } else { global $post; if( empty( $post ) ) $post = get_post($post_id); if( get_post_type($post_id) !== 'plot_detail' ) return $post_id; if( function_exists('types_render_field') ) { $a = types_render_field( 'given', array('raw'=>'true') ); } } if(isset($_POST['wpcf'][$nicknameslug]) && !empty($_POST['wpcf'][$nicknameslug])){ $b = $_POST['wpcf'][$nicknameslug]; $bb = '"'; } else { global $post; if( empty( $post ) ) $post = get_post($post_id); if( get_post_type($post_id) !== 'plot_detail' ) return $post_id; if( function_exists('types_render_field') ) { $bx = types_render_field( 'nickname', array('raw'=>'true') ); if(!empty($bx)) { $b = $bx; $bb = '"'; } } } if(isset($_POST['wpcf'][$middleslug]) && !empty($_POST['wpcf'][$middleslug])){ $c = $_POST['wpcf'][$middleslug]; } else { global $post; if( empty( $post ) ) $post = get_post($post_id); if( get_post_type($post_id) !== 'plot_detail' ) return $post_id; if( function_exists('types_render_field') ) { $c = types_render_field( 'middle', array('raw'=>'true') ); } } if(isset($_POST['wpcf'][$maidenslug]) && !empty($_POST['wpcf'][$maidenslug])){ $d = $_POST['wpcf'][$maidenslug]; $dd = '('; $de = ')'; } else { global $post; if( empty( $post ) ) $post = get_post($post_id); if( get_post_type($post_id) !== 'plot_detail' ) return $post_id; if( function_exists('types_render_field') ) { $dx = types_render_field( 'maiden-name', array('raw'=>'true') ); if(!empty($dx)) { $d = $dx; $dd = '('; $de = ')'; } } } if(isset($_POST['wpcf'][$familyslug]) && !empty($_POST['wpcf'][$familyslug])){ $e = $_POST['wpcf'][$familyslug]; } else { global $post; if( empty( $post ) ) $post = get_post($post_id); if( get_post_type($post_id) !== 'plot_detail' ) return $post_id; if( function_exists('types_render_field') ) { $e = types_render_field( 'family', array('raw'=>'true') ); } } $v = $a . ' ' . $bb . $b . $bb . ' ' . $c . ' ' . $dd . $d . $de . ' ' . $e; $my_args = array( 'ID' => $post_id, 'post_title' => $v, 'post_name' => sanitize_title($v), ); // update the post, which calls save_post again $res = wp_update_post( $my_args, true ); add_action( 'post_updated', 'kida_post_updated_func' ); } add_action( 'post_updated', 'kida_post_updated_func' );`