Skip to content

Instantly share code, notes, and snippets.

@fabriziofeitosa
Last active September 9, 2020 11:29
Show Gist options
  • Save fabriziofeitosa/aa0f95366f9daf4950826dea7861bcea to your computer and use it in GitHub Desktop.
Save fabriziofeitosa/aa0f95366f9daf4950826dea7861bcea to your computer and use it in GitHub Desktop.
(WP) Manage/View Your Posts Only
<?php
function ffq_parse_query_useronly( $wp_query ) {
// Verifica se está na página de edição
if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' ) !== false ) {
// Verifica os "poderes" de quem acessa
if ( !current_user_can( 'activate_plugins' ) ) {
// Function criada mais abaixo (child_remove_some_post_views)
add_action( 'views_edit-post', 'child_remove_some_post_views' );
// Somente seus próprios posts
global $current_user;
$wp_query->set( 'author', $current_user->id );
}
}
}
add_filter('parse_query', 'ffq_parse_query_useronly' );
/**
* Remove: Tudo, Puclicados e Lixo | Posts Views
*
* Requer WP 3.1+.
* @param array $views
* @return array
*/
function child_remove_some_post_views( $views ) {
unset($views['all']);
unset($views['publish']);
unset($views['trash']);
unset($views['draft']);
unset($views['pending']);
return $views;
}
@fabriziofeitosa
Copy link
Author

Caso queira que os "Editores" possa ver as postagens dos outros (pois o script acima só deixa o Admin ver tudo), você pode usar o seguinte complemento:

function posts_for_current_author($query) {
    global $pagenow;

    if( 'edit.php' != $pagenow || !$query->is_admin )
        return $query;

    if( !current_user_can( 'edit_others_posts' ) ) {
        global $user_ID;
        $query->set('author', $user_ID );
    }
    return $query;
}
add_filter('pre_get_posts', 'posts_for_current_author');

Add esse o código acima em "functions.php" ou em seu plugin.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment