Angenommen, ich habe einen neuen Beitragstyp erstellt 'product'. Gibt es eine Möglichkeit, eine Funktion (vom Benutzer erstellt) auszuführen, wenn dieser neue 'product'Beitrag erstellt wurde?
Angenommen, ich habe einen neuen Beitragstyp erstellt 'product'. Gibt es eine Möglichkeit, eine Funktion (vom Benutzer erstellt) auszuführen, wenn dieser neue 'product'Beitrag erstellt wurde?
Antworten:
In functions.php:
function mynewproduct(){
myfunction();
}
add_action( 'new_product', 'mynewproduct' );
Weitere Informationen und die offizielle Dokumentation finden Sie hier:
new_{post_type}es funktionieren wird, weil das statusin der {status}_{post_type}Aktion niemals eingestellt wird new.
Hi @dotty:
Schauen Sie sich das Ende der wp_insert_post()Funktion in der Datei an /wp-includes/post.php(in den Zeilen 2148 bis 2392 in WordPress 3.0.1. Beachten Sie, dass WordPress diese Funktion sowohl zum Hinzufügen als auch zum Aktualisieren von Posts verwendet. )
Am Ende hat es den folgenden Code. Von diesem Code können Sie den Anruf identifizieren wp_transition_post_status()(mehr dazu in Kürze ) und wir haben die Aktion Haken edit_post, post_updated, save_postund wp_insert_post( ehrlich gesagt weiß ich nicht , warum wir die beiden letzteren , statt nur eine haben. ) Sie alle nutzen können diejenigen, die für Ihre Bedürfnisse geeignet sind:
<?php
wp_transition_post_status($data['post_status'], $previous_status, $post);
if ( $update ) {
do_action('edit_post', $post_ID, $post);
$post_after = get_post($post_ID);
do_action( 'post_updated', $post_ID, $post_after, $post_before);
}
do_action('save_post', $post_ID, $post);
do_action('wp_insert_post', $post_ID, $post);
return $post_ID;
Und wie @Jan Fabry erwähnte, gibt es die Action-Hooks in wp_transition_post_status()(auf 2713 bis 2717 von /wp-includes/post.phpin WordPress 3.0.1). Beachten Sie, dass es drei davon gibt; Verwenden Sie gegebenenfalls:
<?php
function wp_transition_post_status($new_status, $old_status, $post) {
do_action('transition_post_status', $new_status, $old_status, $post);
do_action("${old_status}_to_$new_status", $post);
do_action("${new_status}_$post->post_type", $post->ID, $post);
}
Die wp_transition_post_statusFunktion wird aufgerufen, und dies löst die Aktion aus "${new_status}_$post->post_type". Wenn also a productin den publishStatus wechselt, wird die Aktion publish_productausgelöst.