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ì status
trong {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_post
và 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.php
trong 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_status
chứ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 product
di chuyển đến publish
nhà nước, hành động publish_product
sẽ được kích hoạt.