Câu trả lời:
Sau đây sẽ được coi là một bằng chứng về khái niệm hơn là một giải pháp sao chép / dán sẵn sàng.
Điều đó đang được nói, đây là cách bạn đi về nó:
Các hành động chạy bất cứ khi nào một bài đăng được cập nhật hoặc tạo ra. Bạn có thể nối một hàm gọi lại cho nó bằng cách sử dụng .save_post
add_action
Do đó, trường hợp của bạn sẽ phải trông giống như thế này:
// initial hook
add_action( 'save_post', 'wpse105926_save_post_callback' );
function wpse105926_save_post_callback( $post_id ) {
// verify post is not a revision
if ( ! wp_is_post_revision( $post_id ) ) {
// unhook this function to prevent infinite looping
remove_action( 'save_post', 'wpse105926_save_post_callback' );
// update the post slug
wp_update_post( array(
'ID' => $post_id,
'post_name' => 'some-new-slug' // do your thing here
));
// re-hook this function
add_action( 'save_post', 'wpse105926_save_post_callback' );
}
}
Điều có thể hơi khó hiểu ở trên là việc hủy và thử lại chức năng từ bên trong nó. Điều này là bắt buộc, vì chúng tôi gọi wp_update_post
để cập nhật sên, do đó sẽ kích hoạt save_post
hành động để chạy lại.
Bên cạnh đó, nếu bạn muốn WP tự động tạo sên mới dựa trên tiêu đề bài đăng, chỉ cần chuyển một chuỗi trống:
wp_update_post( array(
'ID' => $post_id,
'post_name' => '' // slug will be generated by WP based on post title
));
wp_insert_post_data
bộ lọc, chạy sau khi vệ sinh, ngay trước khi lưu không? Lợi ích lớn nhất của phương pháp này là gì.
Tôi cần điều tương tự ngoại trừ việc chỉ tạo bài.
Tôi đã triển khai giải pháp ở đây (cái này là copy / paste-ready).
Chỉ cần xóa dòng kiểm tra cả hai ngày bằng nhau và nó cũng sẽ cập nhật sên cho các hoạt động chỉnh sửa. Tuy nhiên, tôi không khuyên bạn vì nó sẽ thay đổi URL của bài đăng và điều này không tốt cho SEO, trong số những thứ khác như liên kết bị hỏng (404).