Intereting Posts
Как добавить к этому запросу несколько типов сообщений? Отправить другу по электронной почте для каждого сообщения типа персонализированного сообщения на странице Отключить автоматический URL-адрес WordPress как я могу зарегистрировать пользователя для блога, быть назначен только на этот блог? 2 петли на странице – один с orderby rand второй порядок по дате Пользовательский вызов ajax возвращает 0 Запрос сообщений нескольких условий Как удалить правило перезаписи? Тема WordPress и стиль подключаемого модуля портфолио BWS Только получать сообщения, в которых заполнено post_excerpt Сохранять значение метаданных отображения на бэкэнд – Пользовательский Metabox Я не могу изменить цвет фона тела через style.css Установите категорию по умолчанию – если пользователь не выбрал одно – перед созданием сообщения Я не могу перейти на http://novathon.cloud.reply.eu/wp-admin – всегда перенаправляется в / wp-login Сделать пользовательское поле в ссылку на лицевой стороне?

Предотвратить роль автора от редактирования других сообщений

Я создал настраиваемый тип сообщения «Расширение» и роль «Автор расширений». Пользователь в этой роли должен иметь возможность редактировать собственные расширения.

Так как теперь пользователь может нажать «изменить расширение» в верхней строке и перейти в режим редактирования.

Изменить ссылку на расширение

Как я могу запретить автору расширения входить в редактируемый вид расширений, не свой собственный? Пропустил ли я что-то при настройке?

Создание настраиваемого типа сообщений:

$labels = array( 'name' => _x( 'Extensions', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Extension', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Extensions', 'text_domain' ), 'parent_item_colon' => __( 'Parent Extension:', 'text_domain' ), 'all_items' => __( 'All Extensions', 'text_domain' ), 'view_item' => __( 'View Extension', 'text_domain' ), 'add_new_item' => __( 'Add New Extension', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'edit_item' => __( 'Edit Extension', 'text_domain' ), 'update_item' => __( 'Update Extension', 'text_domain' ), 'search_items' => __( 'Search Extension', 'text_domain' ), 'not_found' => __( 'No Extensions found', 'text_domain' ), 'not_found_in_trash' => __( 'No Extensions found in Trash', 'text_domain' ), ); $rewrite = array( 'slug' => 'extension', 'with_front' => true, 'pages' => true, 'feeds' => true, ); $capabilities = array( 'edit_post' => 'edit_extension', 'read_post' => 'read_extension', 'delete_post' => 'delete_extension', 'edit_posts' => 'edit_extensions', 'edit_others_posts' => 'edit_others_extensions', 'publish_posts' => 'publish_extensions', 'read_private_posts' => 'read_private_extensions', ); $args = array( 'labels' => $labels, 'supports' => array( 'title',), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'show_in_admin_bar' => true, 'menu_position' => 5, 'menu_icon' => 'dashicons-admin-generic', 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'rewrite' => $rewrite, 'capability_type' => 'extension', 'capabilities' => $capabilities, ); register_post_type( 'extension', $args ); 

Создание роли пользователя:

  $extension_author_role = add_role('extension_author', 'Extension Author', array( 'read' => true, 'upload_files' => true, 'edit_extension' => true, 'read_extension' => true, 'delete_extension' => true, 'edit_extensions' => true, 'edit_others_extensions' => false, 'publish_extensions' => true, 'read_private_extensions' => false, ) ); 

Используя этот фрагмент кода, он видит, что автор увидит только свою собственную публикацию
и только может редактировать свои собственные публикации. Только админы теперь смогут редактировать все сообщения.

Вы можете попытаться заменить «author» на «extension_author» и посмотреть, работает ли он для вас по вашему желанию. (Добавить фрагмент в functions.php или собственный плагин)

 function to_parse_query_useronly( $wp_query ) { if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' ) !== false ) { if ( !current_user_can( 'publish_posts' ) ) { global $current_user; $wp_query->set( 'author', $current_user->id ); } } } add_filter('parse_query', 'to_parse_query_useronly' );