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 status
in 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_post
und 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.php
in 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_status
Funktion wird aufgerufen, und dies löst die Aktion aus "${new_status}_$post->post_type"
. Wenn also a product
in den publish
Status wechselt, wird die Aktion publish_product
ausgelöst.