Рассмотрим функционал по назначению записям нескольких авторов. Сделать это возможно плагином Co-Authors Plus (30 000).
Соавторство сохраняется интересным образом, не в БД а в кэше (wp_cache_set). А сам плагин игнорирует стандартное значение author и переопределяет его на свои значения. Например если назначить автора плагином, потом отключить его, переназначить автора и снова включить, то автор останется прежним.
Вывести авторов записи:
coauthors();
coauthors_posts_links();
coauthors_links();
if ( function_exists( 'coauthors_posts_links' ) ) {
coauthors_posts_links();
} else {
the_author_posts_link();
}
Вывести все записи автора
Почему то вывод цикла get_posts с аргументом ‘author’ не выводит записи в которых текущий пользователь является не главным а добавленным автором. Но тот же запрос только через WP_Query работает корректно. Пример:
$args = array(
'posts_per_page' => -1,
'author' => $current_user->ID
);
$theme_post_query = new WP_Query( $args );
while( $theme_post_query->have_posts() ) :
$theme_post_query->the_post();
echo $post->ID;
endwhile;
Получить массив ID и имен авторов поста
$coauthors = get_coauthors($post->ID);
foreach ($coauthors as $coauthor) {
$authors_names[] = $coauthor->display_name;
$authors_ids[] = $coauthor->ID;
}
// перевод в строку для вывода
$authors_names_string = implode(', ', $authors_names);
Вывод только авторских записей
// Показывать автору только собственные записи
function posts_for_current_author($query) {
global $pagenow;
if( 'edit.php' != $pagenow || !$query->is_admin )
return $query;
if( !current_user_can( 'manage_options' ) ) {
global $user_ID;
$query->set('author', $user_ID );
}
return $query;
}
add_filter('pre_get_posts', 'posts_for_current_author');
Записи в соавторстве, с данной функцией, выводится не будут. Если у автора нет ни одной своей записи. Если хотя бы одна запись есть, то записи с соавторством также начнут выводится.