Benutzerdefinierte Post Status Transition Probleme mit Get Post Meta

Ich versuche herauszufinden, einen Haken für einen benutzerdefinierten Beitragstyp namens “Bananen” zu feuern, wenn ein neuer Bananenposten veröffentlicht wird.

Bedarf:

  • Kann $ _POST nicht verwenden
  • Sie müssen Poststatus abrufen können, damit der Code später nicht mehr ausgeführt werden kann. Überprüfen Sie, ob der Code bereits veröffentlicht wurde
  • Müssen in der Lage sein, get_post_meta

Der Aktionshaken funktioniert perfekt. Das einzige Problem ist, dass NEW Post nicht scheinen kann, get_post_meta. Wenn Sie von “Ausstehend” zu “Veröffentlichen” wechseln oder umgekehrt, erhalten Sie die Meta-Arbeiten. Aber das Meta für einen neuen Post zu bekommen funktioniert nicht und gibt ein leeres Ergebnis zurück.

Hier ist ein Beispiel von dem, was ich versuche zu tun.

class bananas { public function __construct() { add_action( 'transition_post_status', array( $this, 'email_bananas_published' ), 10, 3 ); } public function email_bananas_published( $new_status, $old_status, $post ) { if ( $post->post_type === 'bananas' && $new_status !== $old_status ) { $email = get_post_meta( $post->ID, '_bananas_email', true ); error_log( $email ); } } } 

Ich bin seit einer Weile darauf fest und jede Hilfe wird sehr geschätzt.

Solutions Collecting From Web of "Benutzerdefinierte Post Status Transition Probleme mit Get Post Meta"

Hast du wp_insert_post hook im Codex überprüft?

Ich glaube, das ist es wonach Sie suchen. (ungetestet)

 class bananas { public function __construct() { add_action( 'wp_insert_post', array( $this, 'email_bananas_published' ), 10, 3 ); } public function email_bananas_published( $post_id, $post, $update ) { // If this is a revision, don't send the email. if ( wp_is_post_revision( $post_id ) || $update ) return; if ( $post->post_type === 'bananas' && $post->post_status === 'publish' ) { $email = get_post_meta( $post_id, '_bananas_email', true ); error_log( $email ); } } }