Giả sử tôi đã tạo một loại bài 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 'product'bài đăng mới này được tạo không?
Giả sử tôi đã tạo một loại bài 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 'product'bài đăng mới này được tạo không?
Câu trả lời:
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:
new_{post_type}sẽ làm việc vì statustrong {status}_{post_type}hành động sẽ không bao giờ được thiết lập để new.
Xin chào @dotty:
Hãy xem phần cuối của wp_insert_post()chức năng 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 cả để 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 các cuộc gọi đến wp_transition_post_status()(thêm vào đó một chút) và chúng tôi có các móc hành động edit_post, post_updated, save_postvà wp_insert_post( thẳng thắn Tôi không biết lý do tại sao chúng tôi có hai nước này thay vì chỉ một. ) Bạn có thể sử dụng bất kỳ những người phù hợp với nhu cầu của bạn:
<?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()(từ 2713 đến 2717 /wp-includes/post.phptrong WordPress 3.0.1.) Lưu ý rằng 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);
}
Các wp_transition_post_statuschức năng sẽ được gọi, và điều này sẽ kích hoạt các hành động "${new_status}_$post->post_type", vì vậy nếu một productdi chuyển đến publishnhà nước, hành động publish_productsẽ được kích hoạt.