Kết nối wp_insert_post, kiểm tra trạng thái bài đăng auto-draftvà URL cho một GETtham số.
Nhưng trước tiên chúng ta cần một hàm trợ giúp để lấy và vệ sinh GETtham số:
/**
* Set default category.
*
* @wp-hook pre_option_default_category
* @return string Category slug
*/
function t5_get_default_cat_by_url()
{
if ( ! isset( $_GET['post_cat'] ) )
return FALSE;
return array_map( 'sanitize_title', explode( ',', $_GET['post_cat'] ) );
}
Bây giờ trình xử lý dự thảo tự động:
add_action( 'wp_insert_post', 't5_draft_category', 10, 2 );
/**
* Add category by URL parameter to auto-drafts.
*
* @wp-hook wp_insert_post
* @param int $post_ID
* @param object $post
* @return WP_Error|array An error object or term ID array.
*/
function t5_draft_category( $post_ID, $post )
{
if ( ! $cat = t5_get_default_cat_by_url()
or 'auto-draft' !== $post->post_status )
return;
// return value will be used in unit tests only.
return wp_set_object_terms( $post_ID, $cat, 'category' );
}
Điều này chỉ hoạt động nếu get_default_post_to_edit()được gọi với tham số thứ hai $create_in_dbđược đặt thành TRUE. Để bắt trường hợp khác, bạn phải lọc tùy chọn default_category:
add_filter( 'pre_option_default_category', 't5_get_default_cat_by_url' );
Bây giờ bạn có thể sử dụng tham số post_catđể truyền danh sách sên danh mục được phân tách bằng dấu phẩy:

Xem thêm: