7

Wordpressを使って派遣・アルバイト向けのシステムを作っています。これを行うには、新しいカスタム投稿タイプ EMPLOYEE を作成しています。それに対応する 2 人のユーザー AGENT と CUSTOMER が必要です。

  • AGENT ユーザーは、自分の EMPLOYEEを作成および編集できますが、他の AGENT の EMPLOYEE を編集することはできません。
  • EMPLOYEE の投稿は、すべてのエージェント、顧客、および一般大衆が閲覧およびコメントできます。
  • これは、CUSTOMER ユーザーがすべての EMPLOYEE 投稿のみを表示できることも意味します。
  • CUSTOMER ユーザーは、一般大衆と区別する必要があります。これは、EMPLOYEE を採用すると、システムが EMPLOYEE に関連付ける必要があるためです。したがって、CUSTOMER はサインイン ユーザーである必要があります。
  • 最後に、AGENT と CUSTOMER の両方のユーザーが、独自のバニラ Wordpress ユーザー プロファイルを作成/編集し、ユーザー名とパスワードの組み合わせでサインインできます。

この取り決めをどのように実行しますか?ユーザーと機能に関するオンライン ドキュメントを見て、私は髪を引っ張ってぐるぐる回りました。これまでのところ、カスタム投稿タイプの登録は次のとおりです。現在、この投稿タイプの他の情報用のメタ ボックスを設定しています。

register_post_type( 'employee',
    array(
        'labels' => array(
            'name' => __('Employees','tdom'),
            'singular_name' => __('Employee','tdom'),
            'add_new' => __( 'Add New' ),
            'add_new_item' => __( 'Add New Employee' ),
            'edit' => __( 'Edit' ),
            'edit_item' => __( 'Edit Employee' ),
            'new_item' => __( 'New Employee' ),
            'view' => __( 'View Employee' ),
            'view_item' => __( 'View Employee' ),
            'search_items' => __( 'Search Employees' ),
            'not_found' => __( 'No Employees found' ),
            'not_found_in_trash' => __( 'No Employees found in Trash' ),
            'parent' => __( 'Parent Employee' )
        ),
        'public' => true,
        'show_ui' => true,
        'query_var' => true,
        'menu_icon' => get_stylesheet_directory_uri() . '/images/emp_icon.png',
        'menu_position' => 4,
        'capability_type' => 'post',
        'hierarchical' => false,
        'rewrite' => true,
        'supports' => array('title', 'thumbnail', 'author')
    )
);

Justin Tadlock のMemberプラグイン (Google やフォーラムで非常に人気があります) に出会いましたが、プラグインを使用しないように要件が単純であることを望んでいました。また、頭を包み込むには少し多すぎます。

ヘルプ。前もって感謝します。

4

1 に答える 1

4

これは本当に難しいことではありません。

最初のステップは、 に渡されるパラメーターを介して、カスタム投稿タイプに対応するカスタム機能タイプを作成することです。デフォルトを使用しています。つまり、次のとおりです。'capability_type'register_post_type()

'capability_type' => 'post',

それを別の何かに設定します。おそらく'employee'、コーデックスに従って、次のように設定'map_meta_cap'trueます。

'capability_type' => 'employee',
'map_meta_cap'    => true,

$capabilities次のステップは、への呼び出しに渡されたパラメーターを介して、関連する機能をカスタム ユーザーに追加することadd_role()です。「employee」ユーザー ロールの場合はedit_employeeet al (edit_、delete_ など) を追加し、「agent」ユーザー ロールの場合はedit_employeeet al と et alを含めますedit_others_employee

于 2012-04-18T15:26:52.323 に答える