Как получить все записи по post_author в WordPress
Я создаю админ-панель, где нужно показать все записи, назначенные текущему пользователю администратором WordPress.
Я назначил пользователю роль Автор и при создании записи (как администратор) просто назначаю эту запись определенному автору из выпадающего списка.
Мне нужно отображать записи со статусом Опубликовано. Сейчас я использую простой query_posts, но он возвращает все записи.
global $current_user;
get_currentuserinfo();
$user_id = $current_user->ID; // для текущего пользователя это 2
$query = array(
'post_type' => 'post',
'post_author' => $user_id,
'post_status' => array('publish')
);
$my_posts = query_posts($query);
Я также жестко прописал post_author как 2
Также пробовал $my_post = new WP_Query(array( 'post_author' => '2' ));
но без успеха.

Самый краткий ответ — исправить 'post_author' на 'author', так как это ключ, который ищет WordPress. Если ключ указан неверно или с опечаткой, он будет проигнорирован, как в случае с 'post_author'.

Благодарность [Sheikh Heera][1]
if ( is_user_logged_in() ):
global $current_user;
get_currentuserinfo();
$author_query = array(
'posts_per_page' => '-1', // Количество постов (все)
'author' => $current_user->ID // ID текущего автора
);
$author_posts = new WP_Query($author_query);
while($author_posts->have_posts()) : $author_posts->the_post();
?>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
<?php
endwhile;
else :
echo "Пользователь не авторизован";
endif;
[1]: https://stackoverflow.com/users/741747/sheikh-heera

Следующий мини-плагин добавляет виджет на панели управления, который выводит записи текущего пользователя со статусом publish
. Здесь используется функция get_current_user_id()
.
<?php
defined( 'ABSPATH' ) OR exit;
/**
* Plugin Name: (#91605) Dashboard Widget - User posts
*/
add_action( 'wp_dashboard_setup', 'wpse91605_dbwidget_user_posts' );
function wpse91605_dbwidget_user_posts()
{
wp_add_dashboard_widget(
'wpse91605_dbwidget_user_posts'
,_e( 'Ваши опубликованные записи', 'your_textdomain' )
,'wpse91605_dbwidget_user_posts_cb'
);
}
function wpse91605_dbwidget_user_posts_cb()
{
$query = new WP_Query( array(
'author' => get_current_user_id()
,'post_status' => 'publish'
,'posts_per_page' => -1
,'showposts' => -1
,'nopaging' => true
) );
if ( $query->have_posts() )
{
?><ul><?php
while( $query->have_posts )
{
the_post();
?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php the_title(); ?>
</a></li>
<?php
}
?></ul><?php
}
}
