web-dev-qa-db-ja.com

投稿者が投稿を編集して新しいリビジョン(ドラフト)を作成できるようにする方法

私は寄稿者がサイト上に個人的なページを持つことができるようにカスタム投稿タイプを使用しています。

ユーザーが自分のサイトに登録するたびに、登録ユーザーを作成者として持つカスタムタイプの投稿がスクリプトによって作成されます。

ユーザーの投稿を抑えるために、この投稿は編集者によって公開されています。

私はユーザー(寄稿者)になることを望みます:

  • このカスタムタイプの他の投稿を追加できません。
  • 作者である既に公開された投稿を編集することができます。
  • そしてそれらの変更は公開される前に編集者によって承認されなければなりません。

私は ユーザーロールエディタを使用しています ロールと機能を管理するために/.

それをする方法はありますか?

5
bluantinoo

ロールエディターまたはロールスコープを使用すると、投稿者がカスタム投稿タイプを編集するように設定できますが、公開しないため、すべての変更は承認までドラフトとして設定され、カスタム投稿タイプの新しい投稿の作成を制限するにはプラグインを使用できます- Bainternet Posts Creation Limits

更新

編集の再承認を強制するには、このコードを追加します

add_filter( 'wp_insert_post_data', 're_aprove', '99', 2 );
function re_aprove( $data, $postarr ) {
    //check if current user is not admin
    if ( ! current_user_can( 'manage_options' ) && 'YOUR_CUSTOM_TYPE' === $postarr['post_type'] ) {
        if ( 'publish' === $data['post_status'] ) {
            $data['post_status'] = 'pending';
        }
    }
    return $data;
}

YOUR_CUSTOM_TYPEをカスタム投稿タイプ名に変更します。

5
Bainternet

私が '99'を追加するまで、私の仕事はしませんでした2)。 add_filterの末尾まで。

これが理由についての参照です: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data

add_filter('wp_insert_post_data','re_aprove', '99', 2);
function re_aprove( $data , $postarr ){
    global $current_user;
    get_currentuserinfo();
    //check if current user is not admin
    if (!current_user_can('manage_options') && $postarr['post_type'] == "candy-item" ){ 
        if ($data['post_status'] = "publish"){
            $data['post_status'] = "pending";
        }
    }
    return $data;
}
3
Dave Williams

ついに私は 解決しました using Revisionary plugin、 http://wordpress.org/extend/plugins/revisionary/ それは私が主題で尋ねたことを正確にするために使用されますタイトル

機能のより詳細な管理のために(すでに修正版は統合されています) Role Scoper http://wordpress.org/extend/plugins/role-scoper/

最初のものはセットアップがとても簡単で、2番目のものはもっと練習が必要です、ユーザーインターフェースそれは少し混乱しますが、それは本当に強力です

1
bluantinoo