mattrefghi
  • 0
Новичок

Как мне сделать так, чтобы на странице «Добавить новую публикацию» по умолчанию была установлена ​​«Частная видимость»?

  • 0

Я пытаюсь создать плагин, который изменяет страницу «Добавить новое сообщение», чтобы в поле «Видимость» по умолчанию было указано «Частное»:

Status: Draft
Visibility: **Private**
Publish immediately

[Publish]

… в отличие от того, что обычно предполагает WordPress:

Status: Draft
Visibility: **Public**
Publish immediately

[Publish]

На данный момент я использую фильтр «wp_insert_post_data», который позволяет мне изменять любые сообщения со статусом post_status «авточерновик» на «частные». Хотя это работает, есть непреднамеренный побочный эффект: изменение post_status на «частный», похоже, автоматически публикует сообщение, изменяя кнопку в редакторе на «Обновить». Кроме того, если пользователь сохранит до указания заголовка, сообщение будет опубликовано с заголовком «Авточерновик».

Есть ли способ просто изменить видимость на частную по умолчанию, чтобы сообщение не публиковалось автоматически, и изменить кнопку на «Обновить»? В ванильном WordPress пользователи могут вручную изменить видимость на «Частная», а кнопка останется «Опубликовать»… Мне просто нужно добиться этого с помощью плагина. Я также хочу убедиться, что пользователь по-прежнему может выбрать «общедоступный», если захочет.

Спасибо!

Share
  1. поскольку вы разрабатываете плагин, я предполагаю, что вы не хотите трогать какие-либо файлы за пределами wp-content/plugins или../themes в этом отношении.

    Однако, если это не так, следуйте инструкциям:
    Перейдите в wp-admin/includes/meta-boxes.php и найдите:

    $visibility = 'public';
    $visibility_trans = __('Public');
    

    Теперь измените его на очевидное:

    $visibility = 'private';
    $visibility_trans = __('Private');
    

    Опять же, это влияет на файл meta-boxes.php, который находится за пределами папки плагинов. Тем не менее, я думаю, что подход, который вы должны использовать, заключается в создании нового мета-окна, добавлении вашей пользовательской настройки видимости (т.е. частной) и замещении последней настройки видимости WP по умолчанию.

    Лучший,
    Крис

    • 0
  2. из плагина; использует действие «post_submitbox_misc_actions» и некоторый запрос, чтобы перехватить форму публикации пользователя: http://wordpress.org/extend/plugins/private-post-by-default/

    function default_post_visibility(){
    global $post;
    
    if ( 'publish' == $post->post_status ) {
        $visibility = 'public';
        $visibility_trans = __('Public');
    } elseif ( !empty( $post->post_password ) ) {
        $visibility = 'password';
        $visibility_trans = __('Password protected');
    } elseif ( $post_type == 'post' && is_sticky( $post->ID ) ) {
        $visibility = 'public';
        $visibility_trans = __('Public, Sticky');
    } else {
        $post->post_password = '';
        $visibility = 'private';
        $visibility_trans = __('Private');
    } ?>
    
    <script type="text/javascript">
        (function($){
            try {
                $('#post-visibility-display').text('<?php echo $visibility_trans; ?>');
                $('#hidden-post-visibility').val('<?php echo $visibility; ?>');
                $('#visibility-radio-<?php echo $visibility; ?>').attr('checked', true);
            } catch(err){}
        }) (jQuery);
    </script>
    <?php
    }
    
    add_action( 'post_submitbox_misc_actions' , 'default_post_visibility' );
    
    ?>
    
    • 0
  3. Правильный способ автоматически пометить сообщение как личное — сделать это с помощью фильтра wp_insert_post_data. Это очень просто:

    add_filter( 'wp_insert_post_data', 'mark_post_private' );
    function mark_post_private( $data ) {
        if ( 'your_post_type_goes_here' == $data['post_type'] ) {
            $data['post_status'] = 'private';
        }
    
        return $data;
    }
    
    • 0

Оставить ответ

You must login to add an answer.