Ich arbeite an einem erweiterten Revisionssystem, um eine Protokolldatei für alle Änderungen zu erstellen, die von Benutzern und / oder Algorithmen in Bezug auf Metadaten vorgenommen wurden, die an bestimmte Beitragstypen angehängt sind.
Während ich bin vollkommen bewusst , dass update_post_meta
Werke für alle Post - Typen, während update_postmeta
nur auf Post arbeitet, meine Frage nach der Post - Typ abhängig ist, und es ist auch nicht nur die Abdeckung update
Teil, wie es das gleiche für ist updated
, delete
usw.
Nach der Inspektion wp-includes/meta.php
fand ich die zuvor erwähnten Haken, um meine Sachen zu erledigen, aber dies warf Fragen für mich auf.
Der Abschnitt im Kern ist diese einzeilige 215 in Version 4.4.2:
foreach ( $meta_ids as $meta_id ) {
/**
* Fires immediately before updating metadata of a specific type.
*
* The dynamic portion of the hook, `$meta_type`, refers to the meta
* object type (comment, post, or user).
*
* @since 2.9.0
*
* @param int $meta_id ID of the metadata entry to update.
* @param int $object_id Object ID.
* @param string $meta_key Meta key.
* @param mixed $meta_value Meta value.
*/
do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
}
if ( 'post' == $meta_type ) {
foreach ( $meta_ids as $meta_id ) {
/**
* Fires immediately before updating a post's metadata.
*
* @since 2.9.0
*
* @param int $meta_id ID of metadata entry to update.
* @param int $object_id Object ID.
* @param string $meta_key Meta key.
* @param mixed $meta_value Meta value.
*/
do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value );
}
}
So gibt es einen Haken für update_post_meta
, update_comment_meta
und update_user_meta
. Unmittelbar danach wird ein weiterer Hook aufgerufen - nur für die Posts-Tabelle mit dem Namen update_postmeta
, die fast genauso funktioniert, mit dem einzigen Unterschied, dass die maybe_serialize()
Daten des meta_value übergeben werden.
Zeile 204:
$_meta_value = $meta_value;
$meta_value = maybe_serialize( $meta_value );
Zuerst dachte ich, dass der zweite Hook aus Gründen der Abwärtskompatibilität vorhanden ist, aber beide wurden in 2.9.0 eingeführt. update_postmeta
undupdate_{$meta_type}_meta
Als ich ein bisschen weiter schaute, fand ich vor drei Jahren auch eine andere Antwort von mir, in der dieses Thema ebenfalls auftauchte, aber dies war nicht der Hauptpunkt.
Vermisse ich hier etwas?
Ist das doch Abwärtskompatibilität - und wurde gerade auf meta.php
2.9.0 umgestellt? Oder gibt es einen wirklichen Grund, beides zu haben? Für mich update_post_meta()
könnten maybe_unserialize()
die mit der Funktion verknüpften Aktionen bei Bedarf leicht die Daten enthalten, sodass ich wirklich nicht den Sinn sehe, beides zu haben.
Ich freue mich auf Ihre Eingabe!