Notre base de code a une tonne de logique qui s'exécute lorsque la publication est insérée/créée. Cependant, une partie de cette logique dépend de la post-méta personnalisée. Le seul moyen que je connaisse pour ajouter post meta à un nouveau post est comme suit:
$post_id = wp_insert_post($post_obj);
add_post_meta($post_id, 'key', "value");
Cependant, cela signifie que la méta de post n'est pas présente lorsque des crochets sur la post-insertion se produisent.
Existe-t-il un moyen de configurer ou d’ajouter des méta-publications dans le cadre de $post_obj
?
J'ai essayé de créer de nouvelles propriétés de l'objet post avec $post_obj->custom_key = 'value'
, mais cela ne semblait pas réellement se retrouver dans la base de données. La seule chose à laquelle je peux penser est de détourner une propriété existante de l'objet de publication que je n'utilise pas, telle que menu_order
, et de stocker certaines informations à cet endroit. C'est un bidule laid.
Vous pouvez accrocher votre fonction au hook wp_insert_post
action:
add_action( 'wp_insert_post', 'wpse128767_add_meta' );
function wpse128767_add_meta( $post_id ) {
add_post_meta( $post_id, 'key', 'value' );
}
Pour vous assurer que vos métadonnées ont été ajoutées avant l'exécution d'autres crochets d'insertion, attribuez-lui une priorité plus élevée:
add_action( 'wp_insert_post', 'wpse128767_add_meta', 1 );
Par défaut, add_action()
utilise une priorité de 10
; plus le nombre est bas, plus tôt il fonctionne.