web-dev-qa-db-ja.com

カスタム投稿タイプの投稿編集画面をカスタマイズしますか?

特定のカスタム投稿タイプに合わせて[投稿の編集]管理画面を完全にカスタマイズするための最善の方法は何ですか?

カスタム投稿タイプの作成 - フィールドの追加など - をカスタマイズしましたが、パーマリンク、プレビュー投稿、クイック編集の無効化などの要素の多くを削除したいと思います。

15
fxfuture

これらの質問のいくつかはここで答えられます: デフォルトの管理画面オプションとメタボックスの順序を設定します

パーマリンク・メタボックスを削除するには:

function my_remove_meta_boxes() {
    remove_meta_box('slugdiv', 'my-post-type', 'core');
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );

また、#edit-slug-boxをcssまたはjavascriptで隠す必要があります。参照してください: 管理で外部スクリプトをロードするが、特定の投稿タイプのためだけに?

クイック編集を無効にするには

function my_remove_actions( $actions, $post ) {
    if( $post->post_type == 'my-post-type' ) {
        unset( $actions['inline hide-if-no-js'] );
    }
    return $actions;
}
add_filter( 'post_row_actions', 'my_remove_actions', 10, 2 );

プレビューリンクを変更するには、フィルタ「preview_post_link」を使用できますが、それは投稿がまだ公開されていない場合にのみ機能します。したがって、解決策は送信メタボックスを削除し、独自の変更を加えたものを追加することです。

function my_replace_submit_meta_box() {
    remove_meta_box('submitdiv', 'my-post-type', 'core');
    add_meta_box('submitdiv', __('Publish'), 'custom_post_submit_meta_box', 'my-post-type', 'side', 'core');
}
add_action( 'admin_menu', 'my_replace_submit_meta_box' );

function custom_post_submit_meta_box() { // a modified version of post_submit_meta_box() (wp-admin/includes/meta-boxes.php, line 12)
    ...
}
16
sorich87