Bagaimana menyembunyikan semua di PUBLISH metabox kecuali tombol Move to Trash & PUBLISH

10

Saya memiliki jenis posting khusus (disebut kontak). Karena jenis posting ini tidak berfungsi seperti posting, saya tidak ingin menunjukkan SIMPAN HEMAT, PREVIEW, Status, Visibilitas atau Tanggal Terbit.

Satu-satunya opsi yang ingin saya tampilkan adalah tombol PUBLISH & Move to Trash.

Apakah ada cara untuk menyembunyikan opsi lain ini? Jika tidak, bagaimana cara membuat PUBLISH & Pindah ke Sampah yang dapat saya tambahkan ke kotak metabox baru?

katemerart
sumber

Jawaban:

14

Anda cukup menyembunyikan opsi menggunakan CSS. Ini akan menambahkan tampilan: tidak ada gaya ke tindakan misc dan penerbitan kecil di halaman post.php dan post-new.php. Ia memeriksa jenis posting tertentu juga karena semua jenis posting menggunakan dua file ini.

function hide_publishing_actions(){
        $my_post_type = 'POST_TYPE';
        global $post;
        if($post->post_type == $my_post_type){
            echo '
                <style type="text/css">
                    #misc-publishing-actions,
                    #minor-publishing-actions{
                        display:none;
                    }
                </style>
            ';
        }
}
add_action('admin_head-post.php', 'hide_publishing_actions');
add_action('admin_head-post-new.php', 'hide_publishing_actions');
Brian Fegter
sumber
Brian - Terima kasih atas tanggapan cepatnya. Saya mencoba fungsinya, mengganti 'POST_TYPE' dengan nama jenis pos kustom (kontak), tetapi tidak ada yang dihapus ketika saya pergi mengedit / menambah halaman baru.
katemerart
Lihat hasil edit terbaru saya. Seharusnya memperbaiki masalah. :)
Brian Fegter
Itu luar biasa - ini telah membuka cara baru untuk menghapus barang yang tidak ingin saya tunjukkan !! Terima kasih banyak.
katemerart
Senang membantu :)
Brian Fegter
1
Hanya untuk menunjukkannya: Anda dapat menghapus tingkat lekukan untuk kode Anda hanya dengan melakukan if ( $post->post_type != $my_post_type ){ return; }di awal. Tidak perlu seluruh kode Anda terbungkus dalam ifpernyataan.
Pete
1

Dalam contoh ini Anda dapat dengan mudah mengatur jenis posting mana yang ingin Anda sembunyikan opsi penerbitan, contoh menyembunyikannya untuk jenis tipe pot built-in pagedan jenis posting kustom cpt_portfolio.

/**
 * Hides with CSS the publishing options for the types page and cpt_portfolio
 */
function wpse_36118_hide_minor_publishing() {
    $screen = get_current_screen();
    if( in_array( $screen->id, array( 'page', 'cpt_portfolio' ) ) ) {
        echo '<style>#minor-publishing { display: none; }</style>';
    }
}

// Hook to admin_head for the CSS to be applied earlier
add_action( 'admin_head', 'wpse_36118_hide_minor_publishing' );

Pembaruan penting

Saya juga menyarankan Anda memaksakan status kiriman "Diterbitkan" untuk menghindari penyimpanan kiriman sebagai konsep:

/**
 * Sets the post status to published
 */
function wpse_36118_force_published( $post ) {
    if( 'trash' !== $post[ 'post_status' ] ) { /* We still want to use the trash */
        if( in_array( $post[ 'post_type' ], array( 'page', 'cpt_portfolio' ) ) ) {
            $post['post_status'] = 'publish';
        }
        return $post;
    }
}

// Hook to wp_insert_post_data
add_filter( 'wp_insert_post_data', 'wpse_36118_force_published' );
Nabil Kadimi
sumber