Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // 1) Registro o meu post type "documento"
- function wpmidia_register_cpt_documento() {
- $labels = array(
- 'name' => _x( 'Documentos', 'documento' ),
- 'singular_name' => _x( 'Documento', 'documento' ),
- 'add_new' => _x( 'Adicionar novo', 'documento' ),
- 'all_items' => _x( 'Documentos', 'documento' ),
- 'add_new_item' => _x( 'Adicionar novo documento', 'documento' ),
- 'edit_item' => _x( 'Editar documento', 'documento' ),
- 'new_item' => _x( 'Novo documento', 'documento' ),
- 'view_item' => _x( 'Ver documento', 'documento' ),
- 'search_items' => _x( 'Procurar documentos', 'documento' ),
- 'not_found' => _x( 'Nenhum documento encontrado', 'documento' ),
- 'not_found_in_trash' => _x( 'Nenhum documento encontrado na lixeira', 'documento' ),
- 'parent_item_colon' => _x( 'Documento pai:', 'documento' ),
- 'menu_name' => _x( 'Documentos', 'documento' ),
- );
- $args = array(
- 'labels' => $labels,
- 'hierarchical' => false,
- 'public' => true,
- 'show_ui' => true,
- 'show_in_menu' => true
- );
- register_post_type( 'documento', $args );
- }
- add_action( 'init', 'wpmidia_register_cpt_documento' );
- // 2) Registro minha taxonomia "categorias"
- function wpmidia_register_taxonomy_categorias() {
- $labels = array(
- 'name' => _x( 'Categorias', 'categorias' ),
- 'singular_name' => _x( 'Categoria', 'categorias' ),
- 'search_items' => _x( 'Procurar categorias', 'categorias' ),
- 'popular_items' => _x( 'Categorias mais usadas', 'categorias' ),
- 'all_items' => _x( 'Todas as categorias', 'categorias' ),
- 'parent_item' => _x( 'Categoria pai', 'categorias' ),
- 'parent_item_colon' => _x( 'Categoria pai:', 'categorias' ),
- 'edit_item' => _x( 'Editar categoria', 'categorias' ),
- 'update_item' => _x( 'Atualizar categoria', 'categorias' ),
- 'add_new_item' => _x( 'Adicionar nova categoria', 'categorias' ),
- 'new_item_name' => _x( 'Nova categoria', 'categorias' ),
- 'separate_items_with_commas' => _x( 'Separar categorias com vírgulas', 'categorias' ),
- 'add_or_remove_items' => _x( 'Adicionar ou remover categorias', 'categorias' ),
- 'choose_from_most_used' => _x( 'Escolha entre as categorias mais usadas', 'categorias' ),
- 'menu_name' => _x( 'Categorias', 'categorias' ),
- );
- $args = array(
- 'labels' => $labels,
- 'public' => true,
- 'show_in_nav_menus' => true,
- 'show_ui' => true,
- 'show_tagcloud' => true,
- 'hierarchical' => true,
- 'rewrite' => true,
- 'query_var' => true,
- //opcional: se quiser usar sistema de permissões
- 'capabilities' => array(
- 'manage_terms'=>'manage_categorias',
- 'edit_terms'=>'edit_categorias',
- 'delete_terms'=>'delete_categorias',
- 'assign_terms'=>'assign_categorias'
- )
- );
- register_taxonomy( 'categorias', array('documento'), $args );
- }
- add_action( 'init', 'wpmidia_register_taxonomy_categorias', 0 );
- // 3) Removo o metabox padrão da taxonomia "categorias" que aparece na lateral direita do cadastro dos posts
- function wpmidia_remove_tax_metabox() {
- remove_meta_box('categoriasdiv', 'documento', 'normal');
- }
- add_action( 'admin_menu' , 'wpmidia_remove_tax_metabox' );
- // 4) Crio um metabox para inserir a listagem de categorias dentro do contexto do cadastramento de posts
- add_action( 'add_meta_boxes', 'wpmidia_categoria_meta_box' );
- function wpmidia_categoria_meta_box()
- {
- add_meta_box( 'wpmidia_categoria_meta_box', 'Detalhes do Documento', 'wpmidia_categoria_meta_box_setup', 'documento', 'advanced', 'high' );
- }
- function wpmidia_categoria_meta_box_setup(){
- global $post;
- wp_nonce_field( plugin_basename( __FILE__ ), 'wpmidia_info_meta_box_nonce_name' );
- $doc_categoria = get_post_meta( $post->ID, '_doc_categoria', true);
- ?>
- <table class="form-table">
- <tr>
- <td width="15%"><label for="doc_categoria"><strong>Categoria:</strong></label></td>
- <td>
- <select id="doc_categoria" name="doc[categoria]" class="req">
- <option value="0">-Selecione-</option>
- <?php
- $categorias = get_terms( 'categorias', array( 'hide_empty' => 0 ) );
- if($categorias){
- foreach($categorias as $categoria){
- echo '<option value="'.$categoria->term_id.'" '.selected($doc_categoria, $categoria->term_id, false). '>'.$categoria->name.'</option>';
- }
- }
- ?>
- </select>
- </td>
- </tr>
- </table>
- <?php }
- // salvando os dados do metabox
- function wpmidia_meta_box_save( $post_id ) {
- if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
- return;
- if ( !wp_verify_nonce( $_POST['wpmidia_info_meta_box_nonce_name'], plugin_basename( __FILE__ ) ) )
- return;
- //check permissions
- if ( ! current_user_can( 'edit_post', $post_id ) ) return $post_id;
- $doc = $_POST['doc'];
- update_post_meta($post_id, '_doc_categoria', $doc['categoria']);
- //salvando como termo para que possamos utilizar o sistema nativo de templates do WordPress taxonomy.php ou taxonomy-categorias.php
- wp_set_post_terms( $post_id, array($doc['categoria']), 'categorias' );
- return $post_id;
- }
- // save metabox
- add_action( 'save_post', 'wpmidia_meta_box_save' );
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement