Как получить все записи по post_author в WordPress

20 мар. 2013 г., 13:23:22
Просмотры: 14.3K
Голосов: 3

Я создаю админ-панель, где нужно показать все записи, назначенные текущему пользователю администратором 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' ));

но без успеха.

0
Все ответы на вопрос 3
0

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

1 мая 2015 г. 14:49:05
1

Благодарность [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
20 мар. 2013 г. 14:01:30
Комментарии

Хм. Как-то я пропустил, что у тебя уже есть решение :/

kaiser kaiser
20 мар. 2013 г. 14:49:46
0

Следующий мини-плагин добавляет виджет на панели управления, который выводит записи текущего пользователя со статусом 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
    }
}
20 мар. 2013 г. 14:49:31