it-swarm-vi.tech

Phần mềm trong phần mềm và phần mềm

Giả sử tôi đã tạo một loại bài đăng mới 'product'. Có cách nào để thực hiện một chức năng (người dùng đã tạo) khi bài đăng 'product' mới này được tạo không?

7
dotty

Trong hàm.php:

function mynewproduct(){
    myfunction();
}
add_action( 'new_product', 'mynewproduct' );

Để biết thêm và các tài liệu chính thức, tham khảo tại đây:

http://codex.wordpress.org/Post_Status_Transitions

5
Tom J Nowell

Xin chào @dotty:

Hãy xem phần cuối của hàm wp_insert_post() trong tệp /wp-includes/post.php (trên dòng 2148 đến 2392 trong WordPress 3.0.1. Lưu ý rằng WordPress sử dụng chức năng này để thêm và cập nhật bài đăng. )

Cuối cùng, nó có đoạn mã sau. Từ mã này, bạn có thể xác định cuộc gọi đến wp_transition_post_status() (nhiều hơn một chút) và chúng tôi có các móc hành động edit_post, post_updated, save_postwp_insert_post ( thẳng thắn một. ) Bạn có thể sử dụng bất kỳ thứ nào phù hợp với nhu cầu của mình:

<?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;

Và như @Jan Fabry đã đề cập có các móc hành động được tìm thấy trong wp_transition_post_status() (trên 2713 đến 2717 của /wp-includes/post.php trong WordPress 3.0.1.) Lưu ý có ba trong số chúng; sử dụng khi thích hợp:

<?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);
}
3
MikeSchinkel

Hàm wp_transition_post_status sẽ được gọi và điều này sẽ kích hoạt hành động "${new_status}_$post->post_type", vì vậy nếu một product chuyển sang trạng thái publish, hành động publish_product sẽ được kích hoạt.

2
Jan Fabry