In meinem Code habe ich einen benutzerdefinierten Post-Typ-Job. Ich habe eine Rolle namens Job-Manager erstellt. Jetzt möchte ich Berechtigungen zum Hinzufügen, Bearbeiten und Löschen eines Jobs für den Job-Manager erteilen. Nur er kann auf Job-Post-Typ zugreifen ….
Ich habe versucht, die Job-Manager-Rolle durch folgenden Code zu erstellen
function add_job_manager_role(){
add_role(
'job_manager',
'Job Manager',
array(
'read' => true,
'edit_posts' => false,
'delete_posts' => false,
'publish_posts' => false,
'upload_files' => true
)
);
}
add_action( 'admin_init', 'add_job_manager_role', 4 );
So erteilen Sie dem Job-Manager Berechtigungen zum Hinzufügen, Löschen und Bearbeiten von benutzerdefinierten Post-Typ-Jobs
jede Hilfe sehr geschätzt. Vielen Dank im Voraus ….
Wenn Sie die Rolle hinzufügen, müssen Sie auch die Funktionen wie folgt hinzufügen:
/**
add CPT capabilites to Role
*/
add_action('admin_init','o99_add_role_caps',999);
function o99_add_role_caps() {
$role = get_role('my_role'); // ex. job_manager
$role->add_cap( 'read_my_CPT');
$role->add_cap( 'edit_my_CPT' );
$role->add_cap( 'edit_my_CPT' );
$role->add_cap( 'edit_other_my_CPT' );
$role->add_cap( 'edit_published_my_CPT' );
$role->add_cap( 'publish_my_CPT' );
$role->add_cap( 'read_private_my_CPT' );
$role->add_cap( 'delete_my_CPT' );
}
my_CPT
ist natürlich Ihr benutzerdefinierter Beitragstyp, als Sie beim Erstellen die Funktionsargumente angegeben oder geändert haben, als Sie so etwas getan haben:
function change_capabilities_of_CPT( $args, $post_type ){
// Do not filter any other post type
if ( 'my_CPT' !== $post_type ) { // my_CPT == Custom Post Type == 'job' or other
// if other post_types return original arguments
return $args;
}
// This is the important part of the capabilities
/// which you can also do on creation ( and not by filtering like in this example )
// Change the capabilities of my_CPT post_type
$args['capabilities'] = array(
'edit_post' => 'edit_my_CPT',
'edit_posts' => 'edit_my_CPT',
'edit_others_posts' => 'edit_other_my_CPT',
'publish_posts' => 'publish_my_CPT',
'read_post' => 'read_my_CPT ',
'read_private_posts' => 'read_private_my_CPT',
'delete_post' => 'delete_my_CPT'
);
// Return the new arguments
return $args;
}
Bearbeiten I
Für weitere Informationen:
Um den CPT steuern zu können, gibt es mehrere andere capabilities
bei jeder Operation beteiligt.
Nur zum Beispiel um publish_my_CPT
und um sie zu bearbeiten, benötigen Sie die edit_my_CPT
&& edit_other_my_CPT
&& read_my_CPT
&& read_private_my_CPT
usw. bitte sieh dir … an Fähigkeiten im Codex und mit dem geposteten code kannst du das hinzufügen _my_CPT
(z.B – _job
oder was auch immer CPT ) zu diesen Fähigkeiten hinzufügt, sodass Sie das gewünschte Ergebnis erzielen können.
Sie haben bereits eine Rolle hinzugefügt – Geben Sie ihm also die Möglichkeit, diesen Beitragstyp zu bearbeiten, und fügen Sie diese Fähigkeiten auch in die Registrierung des Beitragstyps ein.
– Ständer
16. September 2019 um 8:10 Uhr
im Grunde: folgen Sie dieser Anleitung: 3.7designs.co/blog/2014/08/…
– Ständer
16. September 2019 um 8:10 Uhr
Wenn Sie die Rolle einfach verwalten möchten, können Sie das Mitglieder-Plugin verwenden, das genau das ist, was Sie wollen. fr.wordpress.org/plugins/members
– Alexis Vandepitte
16. September 2019 um 8:47 Uhr
Ich habe bereits einen Posttyp-Job. Ich möchte nur diesem Posttyp Berechtigungen erteilen. Muss ich den Posttyp noch registrieren?
– Bala
16. September 2019 um 8:53 Uhr
Ich habe es nicht geschafft, den obigen Code zu verwenden. Ich möchte, dass der Job-Manager nur den Job-Post-Typ hinzufügen, bearbeiten und löschen kann
– Bala
16. September 2019 um 10:26 Uhr