save_post funktioniert nicht mit Anhängen

Ich habe eine Meta-Box für Posts und Pages erstellt und auch zusätzliche Anhänge getestet. Aber merkwürdigerweise save_post der Haken save_post nicht.

 $cpts = apply_filters( 'my_filter', array( 'post', 'page' ) ); // Added attachment through filter foreach( $cpts as $pt ) { add_meta_box( 'my_metabox_id', __( 'Meta Box' ), array( $this, 'my_metabox_callback' ), $pt, 'side' ); } add_action( 'save_post', array( $this, 'save_metabox_data' ) ); 

Warum das? Ist der attachment nicht auch ein Beitragstyp und unterliegt daher den gleichen Haken wie andere Beitragstypen?

Solutions Collecting From Web of "save_post funktioniert nicht mit Anhängen"

Nicht wirklich, Anhänge sind immer noch nicht “Vollpost-Typen”. Manny Flerumond deutet das ganz gut in diesem Thread an :

Ich habe in den letzten Tagen darüber nachgedacht: Derzeit werden alle Mediendateien, die auf eine WordPress-Website hochgeladen werden, standardmäßig auf den Post-Status “Vererben” gesetzt. Media wurde an einen bestimmten Post angehängt, sodass er den Status des Posts geerbt hat. Wir beginnen damit, Medien direkt an Posts anzuhängen und machen sie sogar so, als würden sie Metaboxen und Taxonomien in neueren Versionen von WP zulassen. Ich denke, ein nächster logischer Schritt besteht darin, Medienpoststatus anders als inherit . Ich kann mir eine Reihe von Fällen vorstellen, in denen das Erstellen eines Bildes oder einer Datei unter anderem nützlich sein könnte.


Ich habe die Lösung in diesem Stack-Overflow-Post gefunden: Der “save_post” -Hook funktioniert nicht beim Post-Typ-Anhang . Wir müssen den Haken edit_attachment :

 add_action( 'edit_attachment', array ( $this, 'save_attachment_mb_data'), 10, 1 ); public function save_attachment_mb_data( $post_id ) { // do_our_thing(); } 

Beachten Sie, dass es nur einen Parameter, $post_id , $post_id , so dass wir denselben Callback nicht wie andere Post-Typen verwenden können. Nun, es sei denn, wir lassen den zweiten ( $post_object ) für normale Post-Typen fallen.