Testen eines Blogposts für Update vs. Veröffentlichungsstatus – Einmalig

Ich möchte eine Aktion ausführen, wenn ein Blogbeitrag zum ersten Mal veröffentlicht wird. Ich möchte keine weiteren Änderungen vornehmen.

Ich habe ein Plug-in dafür geschrieben. Die function wird jedoch jedes Mal ausgeführt, wenn der Post aktualisiert wird, unabhängig vom Veröffentlichungs- oder Aktualisierungsstatus.

Hier ist ein Ausschnitt meines Plugins:

function emailSubscribers( $new_status, $old_status, $post ) { // 2014-04-21 http://wordpress.stackexchange.com/questions/69772/execute-function-when-post-is-published //error_reporting(E_ALL); ini_set('display_errors', 'On'); // don't use this -- it messes up page //$post = get_post($post_ID); //echo '
'; print_r($post); echo '

'; exit; // for testing purposes //echo '

'; echo 'Published: ' . $post->post_date . '
' . 'Updated: ' . $post->post_modified; echo '

'; exit; // for testing purposes $thisCategory = get_the_category($post/*->ID*/); $blogTitle = get_the_title($post/*->ID*/); // must be done this way so the html entities get decoded properly if ( 'publish' !== $new_status or 'publish' === $old_status ) return; // 2014-04-21 http://wordpress.stackexchange.com/questions/69772/execute-function-when-post-is-published if ( 'post' !== $post->post_type ) return; // restrict the filter to a specific post type // 2014-04-21 http://wordpress.stackexchange.com/questions/69772/execute-function-when-post-is-published /* the rest of my code which actually gets processed regardless of post status */ } // end emailSubscribers() add_action( 'transition_post_status', 'emailSubscribers', 10, 3 );

Andere Antwort (en) an anderer Stelle in Stackoverflow lösen dieses spezifische Problem nicht.

Solutions Collecting From Web of "Testen eines Blogposts für Update vs. Veröffentlichungsstatus – Einmalig"

Sie können den dynamischen Haken verwenden

 do_action( "{$old_status}_to_{$new_status}", $post ); 

in wp_transition_post_status() , um eine exakte Kombination zu erreichen. In deinem Fall wäre es so etwas wie draft_to_publish .

Ich bin nicht sicher, warum genau Ihr Versuch scheitert, ohne es gründlich zu debuggen.