Đăng ký trạng thái bài đăng "tổng hợp" cho loại "công thức" tùy chỉnh bài đăng:
register_post_status( 'aggregated', array(
'label' => _x( 'Aggregated ', 'post status label', 'bznrd' ),
'public' => true,
'label_count' => _n_noop( 'Aggregated s <span class="count">(%s)</span>', 'Aggregated s <span class="count">(%s)</span>', 'plugin-domain' ),
'post_type' => array( 'recipes' ), // Define one or more post types the status can be applied to.
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'show_in_metabox_dropdown' => true,
'show_in_inline_dropdown' => true,
'dashicon' => 'dashicons-businessman',
) );
Trong metabox xuất bản màn hình chỉnh sửa bài đăng "tùy chỉnh", thêm trạng thái bài đăng tùy chỉnh trong danh sách thả xuống và thay đổi nhãn nút "Lưu bản nháp" nếu trạng thái bài đăng được chọn là "tổng hợp":
add_action('admin_footer-post.php',function(){
global $post;
$complete = '';
$label = '';
if($post->post_type == 'recipes') {
if ( $post->post_status == 'aggregated' ) {
$complete = ' selected=\"selected\"';
$label = 'Aggregated';
}
$script = <<<SD
jQuery(document).ready(function($){
$("select#post_status").append("<option value=\"aggregated\" '.$complete.'>Aggregated</option>");
if( "{$post->post_status}" == "aggregated" ){
$("span#post-status-display").html("$label");
$("input#save-post").val("Save Aggregated");
}
var jSelect = $("select#post_status");
$("a.save-post-status").on("click", function(){
if( jSelect.val() == "aggregated" ){
$("input#save-post").val("Save Aggregated");
}
});
});
SD;
echo '<script type="text/javascript">' . $script . '</script>';
}
});
Thêm trạng thái bài đăng tùy chỉnh trong màn hình chỉnh sửa nhanh của lưới quản trị bài đăng tùy chỉnh:
add_action('admin_footer-edit.php',function() {
global $post;
if( $post->post_status == 'recipes' ) {
echo "<script>
jQuery(document).ready( function() {
jQuery( 'select[name=\"_status\"]' ).append( '<option value=\"aggregated\">Aggregated</option>' );
});
</script>";
}
});
Hiển thị tổng trạng thái bài đăng tùy chỉnh trong lưới quản trị bài đăng tùy chỉnh:
add_filter( 'display_post_states', function( $statuses ) {
global $post;
if( $post->post_type == 'recipes') {
if ( get_query_var( 'post_status' ) != 'aggregated' ) { // not for pages with all posts of this status
if ( $post->post_status == 'aggregated' ) {
return array( 'Aggregated' );
}
}
}
return $statuses;
});