Как скрыть все в метабоксе PUBLISH, кроме кнопки «Переместить в корзину» и «PUBLISH»

10

У меня есть пользовательский тип сообщения (называемый контактами). Так как этот тип сообщения не работает как сообщение, я не хочу показывать СОХРАНИТЬ ПРОЕКТ, ПРОСМОТР, Статус, Видимость или Дату публикации.

Единственные опции, которые я хочу показать, это PUBLISH & Move to Trash.

Есть ли способ скрыть эти другие варианты? Если нет, то как мне создать новую PUBLISH & Move to Trash, которую я могу добавить в новый metabox?

katemerart
источник

Ответы:

14

Вы можете просто скрыть параметры, используя CSS. Это добавит отображение: без стиля к разным и незначительным публикациям на страницах post.php и post-new.php. Он также проверяет определенный тип записей, поскольку все типы записей используют эти два файла.

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');
Брайан Фегтер
источник
Брайан - Спасибо за быстрый ответ. Я попробовал функцию, заменив 'POST_TYPE' на имя пользовательского типа сообщения (контакты), но ничего не удаляется, когда я иду на редактирование / добавление новых страниц.
Катемерарт
Проверьте мое последнее изменение. Это должно решить проблему. :)
Брайан Фегтер
Это великолепно - это открыло совершенно новый способ удалять вещи, которые я не хочу показывать !! Огромное спасибо.
Катемерарт
Рад выручить :)
Брайан Фегтер
1
Просто чтобы указать на это: вы можете удалить уровень отступа для вашего кода, просто сделав if ( $post->post_type != $my_post_type ){ return; }в начале. Нет необходимости заключать весь код в ifинструкцию.
Пит
1

В этом примере вы можете легко указать, для каких типов публикаций вы хотите скрыть параметры публикации, в примере они скрываются для типа встроенных горшков pageи пользовательского типа публикации 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' );

Важное обновление

Я бы также предложил вам установить статус сообщения «Опубликован», чтобы не сохранять его как черновики:

/**
 * 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' );
Набиль Кадими
источник