web-dev-qa-db-de.com

Keine Autoren in Dropdown-Liste zum Ändern des Autors

Ich habe einen benutzerdefinierten Beitragstyp "Review" und eine benutzerdefinierte Rolle "Reviewer" hinzugefügt. Das Problem ist, wenn ich als Administrator angemeldet bin. Ich prüfe, welcher der aktuellen Autoren der Administrator ist, und ich möchte den Autor in einen Prüfer ändern. Ich habe keine Optionen in der Dropdown-Liste außer dem Administrator. Wenn ich einen Beitrag ändere, dessen Autor ein Prüfer ist, habe ich in der Dropdown-Liste zwei Optionen: den aktuellen Autor und den Administrator. Andere Gutachter sind nicht sichtbar.

hier ist ein Teil mit Fähigkeiten

'capabilities' => array(
    'edit_post' => 'edit_review',
    'edit_others_posts' => 'edit_others_reviews',
    'publish_posts' => 'publish_reviews',
    'read_post' => 'read_swpd_review',
    'read_private_posts' => 'read_private_reviews',
    'delete_post' => 'delete_swpd_review'
),

und neue Rolle setzen

/* Add guest author role to the blog */
add_role('reviewer', 'Reviewer', array('edit_review','read_review','delete_review'));

//add capabilities for admin
$role_object = get_role( 'administrator' );
$role_object->add_cap( 'read_review' );
$role_object->add_cap( 'edit_review' );
$role_object->add_cap( 'delete_review' );
$role_object->add_cap( 'publish_reviews' );
$role_object->add_cap( 'edit_others_reviews' );
//set level for reviewer (should fix a dropdown bug)
$role_object = get_role( 'reviewer' );
$role_object->add_cap('level_1');

Geht es um Fähigkeiten? Was könnte falsch sein?

3
HoGo

Die Rolle "Prüfer" verfügt nur über spezielle Funktionen, keine anderen Funktionen. Um in die Autorenliste aufgenommen zu werden, müssen Sie mindestens ein Mitwirkender oder Autor sein.

function rb_addroles() {
    $role = get_role('contributor');
    remove_role( 'reviewer' );
    add_role( 'reviewer', 'Reviewer', $role->capabilities );

    $reviewer = get_role('reviewer');

    $reviewer->add_cap( 'edit_review' );
    $reviewer->add_cap( 'read_review' );
    $reviewer->add_cap( 'delete_review' );
}  
add_action( 'admin_init', 'rb_addroles' );

Mit dieser Funktion verfügt ein Prüfer über Mitarbeiterfunktionen sowie über Ihre speziellen Prüferfunktionen. Sie können den Autor des Beitrags ändern, um ihm auch bearbeitbare Berechtigungen im Back-End zu erteilen.

Übrigens müssen Sie das Skript nur einmal ausführen, vorzugsweise in einem Plugin oder functions.php mit angemeldetem Admin-Account.

Sie können die Rolle überprüfen, indem Sie:

$reviewer = get_role('reviewer');
print_r($reviewer);
1
Rob Vermeer