問題描述

我正在嘗試建立一個外掛來改變 「新增新帖」 頁面,因此可見性欄位預設為”Private”:

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

[Publish]

… 而不是 WordPress 通常假設的:

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

[Publish]

目前,我正在使用”wp_insert_post_data” 過濾器,這樣可以讓我將”auto-draft” 的 post_status 的任何帖子更改為”private” 。雖然這樣做,但是有一個意想不到的 side-effect:將 post_status 更改為”private” 似乎自動釋出該資訊,將編輯器中的按鈕更改為”Update” 。此外,如果使用者在指定標題之前儲存,則該帖子將以標題”Auto-Draft” 釋出。

有沒有什麼辦法,我可以簡單地改變可見性私人預設情況下,以不 auto-publish 的方式,並將按鈕更改為”Update”?在香草 WordPress 中,使用者可以手動將可見性更改為 「私人」,按鈕仍然保留為 「釋出」… 我只需要透過一個外掛實現。我也想確保”public” 仍然可以由使用者選擇,他們是否願意。

謝謝!

最佳解決方案

因為你正在開發一個 plug-in,我假設你不想觸控 wp-content /plugins 或../themes 之外的任何檔案。

但是,如果不是這樣,請按照以下步驟操作:去 wp-admin /includes /meta-boxes.php 找到:

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

現在改為明顯:

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

再次,這會影響在外掛資料夾之外的 meta-boxes.php 檔案。儘管如此,我認為您應該採取的方法是建立一個新的元框,新增您的自定義可見性設定 (即私有),並使後者覆蓋預設的 WP 可見性設定。

最好的,克里斯

次佳解決方案

從外掛; 使用動作’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' );

?>

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。