Obține toate articolele după post_author

20 mar. 2013, 13:23:22
Vizualizări: 14.3K
Voturi: 3

Îmi creez un panou de administrare în care trebuie să afișez toate articolele atribuite utilizatorului curent de către administratorul WordPress.

Am atribuit rolul de Autor utilizatorului și în timp ce creez articole (ca administrator WordPress) atribui articolul unui autor din meniul drop-down Autor.

Așadar, trebuie să afișez articole cu statusul Publicat. Momentan folosesc o simplă interogare query_posts dar returnează toate articolele.

global $current_user;
get_currentuserinfo();
$user_id = $current_user->ID;    // pentru utilizatorul curent este 2

$query = array(
        'post_type' => 'post',
        'post_author' => $user_id,
        'post_status' => array('publish')
    );
$my_posts = query_posts($query);

Am încercat și cu post_author hardcodat la 2

Am încercat și $my_post = new WP_Query(array( 'post_author' => '2' ));

dar nu funcționează.

0
Toate răspunsurile la întrebare 3
0

Cea mai scurtă posibilitate de răspuns ar fi să corectezi 'post_author' în 'author', deoarece acesta este cheia pe care WordPress o caută. Dacă o cheie este incorectă sau scrisă greșit, aceasta va fi ignorată, așa cum a fost cazul cu 'post_author'.

1 mai 2015 14:49:05
1

Mulțumiri către [Sheikh Heera][1]

if ( is_user_logged_in() ):
    global $current_user;
    get_currentuserinfo();
    $author_query = array(
        'posts_per_page' => '-1', // Număr de articole pe pagină (-1 = toate articolele)
        'author' => $current_user->ID // ID-ul autorului curent
    );
    $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 "nu ești autentificat";
endif;


  [1]: https://stackoverflow.com/users/741747/sheikh-heera
20 mar. 2013 14:01:30
Comentarii

Meh. Cumva am ratat faptul că deja aveai o soluție :/

kaiser kaiser
20 mar. 2013 14:49:46
0

Următorul mini-plugin adaugă un widget în panoul de control care interoghează postările utilizatorului curent care au statutul publish. Puteți vedea funcția get_current_user_id() în utilizare.

<?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( 'Postările tale publicate', '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 mar. 2013 14:49:31