Last active
December 29, 2015 03:49
-
-
Save bordoni/7609965 to your computer and use it in GitHub Desktop.
Exemplos do WordCamp SP 2013
Slides em: http://bit.ly/wcsp2013_bordoni
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Exemplo 1 | |
// Filtra a edição de posts da categoria 6 permitida apenas para os usuários 5 e 9 | |
add_filter( 'user_has_cap', function( $allcaps, $caps, $args, $user ){ | |
if ( in_array($args[0], array( 'edit_post' ) ) ) | |
return $allcaps; | |
// Para `edit_post` será passado um argumento com o ID do post que desejamos verificar | |
if ( !isset( $args[2] ) || $args[2] == 0 || !is_numeric($args[2]) ) | |
return $allcaps; | |
if ( !isset($allcaps['edit_post']) || !$allcaps['edit_post'] ) | |
return $allcaps; | |
$cats = wp_get_object_terms( $args[3], 'category', array('fields' => 'ids') ); | |
if ( !in_array(6, $cats) ) | |
return $allcaps; | |
if (in_array($user->ID, array(5, 9) )){ | |
$allcaps['edit_post'] = true; | |
} else { | |
unset( $allcaps['edit_post'] ); | |
} | |
return $allcaps; | |
}, 10, 4 ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Exemplo 2 | |
// Caso seja dezembro liberar o upload de qualquer tipo de arquivo | |
add_filter('role_has_cap', function($rolecaps, $cap, $role_name){ | |
if ( !in_array( $role_name, array('contributor', 'author') ) || !is_admin() ) | |
return $rolecaps; | |
$now = new DateTime(); | |
if($now->format("n")==11) | |
$rolecaps['unfiltered_upload'] = true; | |
return $rolecaps; | |
}, 10, 3); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Exemplo 3 - Retirado do Core do WordPress | |
// Editar um comentário no WordPress | |
// Dentro da função `map_meta_cap`, que pode ser modificado em um filtro de mesmo nome `map_meta_cap` | |
$comment = get_comment( $comment_ID ); | |
if ( empty( $comment ) ) | |
break; | |
$post = get_post( $comment->comment_post_ID ); | |
$caps = map_meta_cap( 'edit_post', $user_id, $post->ID ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Exemplo 4 - Retirado de um plugin | |
// Exemplo de como fazer a filtragem de permissões, que foi depreciado já tem | |
// algum tempo mas muitos plugins anda utilizam | |
// Retirado de: http://wordpress.org/plugins/tantan-s3-cloudfront/ | |
// Favor utilizar: https://github.com/bradt/wp-tantan-s3 | |
add_options_page('Amazon S3', 'Amazon S3', 10, __FILE__, array(&$this, 'admin')); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Exemplo 5 | |
// Garantindo que qualquer usuário pode fazer upload quando estiver em uma | |
// derminada página do WordPress e no front-end | |
add_filter('user_has_cap', function($allcaps, $caps, $args, $user){ | |
if (!defined('DOING_AJAX')) | |
return $allcaps; | |
global $wp_query; | |
if ( is_admin() || in_array($args[0], array( 'upload_files' ) ) ) | |
return $allcaps; | |
if (!isset($wp_query) || !is_a($wp_query, "WP_Query") || !$wp_query->is_single(25)) | |
return $allcaps; | |
$allcaps['upload_files'] = true; | |
return $allcaps; | |
}, 10, 4); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Exemplo 6 - Retirdo do Core do WordPress | |
// Permite ao usuário a editar o próprio pefil | |
if ( $user_id == get_current_user_id() ) | |
break; // Não requer nenhuma permissão |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Exemplo 7 - Como é tratado no Core do WordPress | |
// Troca a permissão necessária para ativar um plugin caso seja um MultiSite | |
$required[] = 'activate_plugins'; | |
if ( is_multisite() ) | |
$required[] = 'manage_network_plugins'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Exemplo 8 - Como é tratado no Core do WordPress | |
// Não permite que nenhum usuário veja a estrutura de links na administração | |
// após a versão em que a funcionalidade deixou de existir | |
if ( get_option('link_manager_enabled') ) | |
$required[] = 'manage_links'; | |
else | |
$required[] = 'do_not_allow'; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment