Cadastro x Perfil x Tabela Classificação
-
Bom dia pessoal,
Tenho um site de esportes locais, onde gostaria de exibir uma tabela de classificação de lutadores de acordo com o perfil cadastrado. Para isso, pensei em 3 passos:
1. Cadastro dos Atletas;
2. Exibição do Perfil;
3. Exibição do Ranking.Para isso, criei uma nova função que se chama “Atleta”, no functions.php. Instalei os plugins ‘Cimy User Extra Fields’ e ‘New User Approve’ para editar o formulário de cadastro e tornar o cadastro pendente para que eu possa aprovar de acordo com os dados. Ok, cadastro está funcionando.
Para o perfil do atleta, gostaria que os dados incluídos no momento do cadastro, fossem os mesmos que aparecessem no perfil. E para o ranking, dentro de cada perfil, gostaria de adicionar informações de acordo com as súmulas dos eventos e através dessas informações, apresentar os dados no ranking e também no perfil.
Para tal, criei um plugin para adicionar a aba Atleta no menu, mas agora vem a parte que não consegui fazer. Ao invés de aparecer o conteúdo do post, gostaria de poder selecionar o atleta cadastrado, e a partir dessa seleção, “resgatar” todas as informações deste, utilizando inclusive a foto cadastrada, como a imagem destaque do post “Atleta”.
Segue os códigos do plugin criado:
atletas.php
<?php if ( ! defined( 'GP_atleta_BASE_FILE' ) ) define( 'GP_atleta_BASE_FILE', __FILE__ ); if ( ! defined( 'GP_atleta_BASE_DIR' ) ) define( 'GP_atleta_BASE_DIR', dirname( GP_atleta_BASE_FILE ) ); if ( ! defined( 'GP_atleta_PLUGIN_URL' ) ) define( 'GP_atleta_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); include('atleta-post-type.php'); include('shortcode-atleta.php');
atleta-post-type.php
<?php // Register custom post type "Seção da Página" add_action('init', 'atleta'); function atleta() { $atleta_slug = function_exists('ot_get_option')?ot_get_option('atleta_slug','atleta'):'atleta'; $labels = array( 'name' => __('Atleta', 'CriandoWebsite'), 'singular_name' => __('Atleta', 'CriandoWebsite'), 'add_new' => __('Adicionar Atleta', 'CriandoWebsite'), 'add_new_item' => __('Novo Atleta', 'CriandoWebsite'), 'edit_item' => __('Editar Atleta', 'CriandoWebsite'), 'new_item' => __('Novo Atleta', 'CriandoWebsite'), 'view_item' => __('Ver Atleta', 'CriandoWebsite'), 'search_items' => __('Buscar Atleta', 'CriandoWebsite'), 'not_found' => __('Nenhum atleta encontrado', 'CriandoWebsite'), 'not_found_in_trash' => __('Nenhum atleta encontrado na lixeira', 'CriandoWebsite'), 'parent_item_colon' => '' ); $args = array( 'labels' => $labels, 'menu_position' => 8, 'supports' => array('title','editor','thumbnail',), 'public' => false, 'show_ui' => true, /*'menu_icon' => get_stylesheet_directory_uri(). '/images/atleta.png',*/ 'publicly_queryable' => true, 'has_archive' => true, 'hierarchical' => false, 'rewrite' => array('slug' => $atleta_slug), ); register_post_type('atleta',$args); } // Add meta data add_action( 'admin_init', 'atleta_meta_boxes' ); function atleta_meta_boxes() { /** * Supported TYPE: * background * ... * ... * ... */ $my_meta_box = array( 'id' => 'my_meta_box', 'title' => 'Academia/Equipe', 'desc' => '', 'pages' => array( 'atleta' ), 'context' => 'normal', 'priority' => 'high', 'fields' => array( array( 'id' => 'academia', 'label' => 'Academia/Equipe', 'desc' => '', 'std' => '', 'type' => 'text', 'class' => '', 'choices' => array() ), ) ); if (function_exists('ot_register_meta_box')) { ot_register_meta_box( $my_meta_box ); } } add_filter('manage_posts_colunas', 'mb_posts_colunas_id', 1); add_action('manage_posts_custom_coluna', 'posts_custom_id_colunas', 1, 2); function mb_posts_colunas_id($defaults){ $defaults['wps_post_id'] = __('ID'); return $defaults; } function posts_custom_id_colunas($column_name, $id){ if($column_name === 'wps_post_id'){ echo $id; } } add_action( 'admin_init', 'atleta_meta_boxes1' ); function atleta_meta_boxes1() { /** * Supported TYPE: * background * ... * ... * ... */ $my_meta_box2 = array( 'id' => 'my_meta_box2', 'title' => 'Cartel', 'desc' => '', 'pages' => array( 'atleta' ), 'context' => 'normal', 'priority' => 'high', 'fields' => array( array( 'id' => 'vitorias', 'label' => 'Vitórias', 'desc' => '', 'std' => '', 'type' => 'text', 'class' => '', 'choices' => array() ), array( 'id' => 'empates', 'label' => 'Empates', 'desc' => '', 'std' => '', 'type' => 'text', 'class' => '', 'choices' => array() ), array( 'id' => 'derrotas', 'label' => 'Derrotas', 'desc' => '', 'std' => '', 'type' => 'text', 'class' => '', 'choices' => array() ), array( 'id' => 'knockout', 'label' => 'Knock-Out', 'desc' => '', 'std' => '', 'type' => 'text', 'class' => '', 'choices' => array() ), ) ); if (function_exists('ot_register_meta_box')) { ot_register_meta_box( $my_meta_box2 ); } }
shortcode-atleta.php
<?php function parse_atleta_func($atts, $content){ $id = isset($atts['id']) ? $atts['id'] : ''; $bg_color = isset($atts['bg_color']) ? $atts['bg_color'] : ''; $animation_class = isset($atts['animation'])?'wpb_'.$atts['animation'].' wpb_animate_when_almost_visible':''; wp_reset_postdata(); $args = array( 'post_type' => 'atleta', 'p' => $id, 'post_status' => 'publish', ); $html = ' <div class="row-fluid"> '; $the_query = new WP_Query( $args ); if($the_query->have_posts()){ while($the_query->have_posts()){ $the_query->the_post(); $meta_data = get_post_custom(); $cont = get_the_content(); $cont = apply_filters('the_content', $cont); $image_src = wp_get_attachment_image_src( get_post_thumbnail_id(),'thumbname' ); $arr_cartel = array( 'vitorias' => isset($meta_data['vitorias'][0]) ? $meta_data['vitorias'][0] : '', 'empates' => isset($meta_data['empates'][0]) ? $meta_data['empates'][0] : '', 'derrotas' => isset($meta_data['derrotas'][0]) ? $meta_data['derrotas'][0] : '', 'knockout' => isset($meta_data['knockout'][0]) ? $meta_data['knockout'][0] : '', ); $html .= ' <div class="span12 '.$animation_class.'"> <div class="atleta" style="background:'.$bg_color.'"> <img src="'.$image_src[0].'" style="");/> <div class="atleta-info"> <span class="atleta-name">'.get_the_title().'</span> <p>'.$meta_data['position'][0].'</p> <div class="dotted"></div> '.$cont.' <div class="dotted"></div> <div class="atleta-cartel"> '.show_cartel_icon_mb($arr_cartel).' </div> </div> </div> </div> '; } } $html .= ' </div> '; wp_reset_postdata(); return $html; } add_shortcode( 'atleta', 'parse_atleta_func' ); if(!function_exists('show_cartel_icon_mb')){ function show_cartel_icon_mb($arr_cartel = array()){ $html = ''; if(count($arr_cartel) > 0){ foreach($arr_cartel as $key => $value){ if(isset($value) && $value != '') $html .= '<a href="'.$value.'" class="icon-cartel icon-'.str_replace('_', '-', $key).'"><!-- --></a>'; } } return $html; } }
Sei que é dentro do atleta post type onde eu deveria substituir a parte onde estaria a conteúdo, pelo campo de seleção do usuário desejado, e assim demonstrar as informações do cadastro. Abaixo dessas informações de cadastro, eu quero ainda poder editar depois, a academia do lutador e o cartel dele (vitória, empate, derrota, etc), de acordo com os eventos.
A terceira parte, é a exibição do ranking. Seria uma página que fizesse o resgate de todos os posts do tipo atleta, e organizasse de acordo com o cartel.
Mas primeiro, como eu deveria fazer o link entre o arquivo “atleta-post-type.php” e o cadastro de usuário?
Links:
– Página de Registro de novo usuário: http://zonadoesporte.com/portal/wp-login.php?action=register– Página para exibir o perfil dos atletas: http://zonadoesporte.com/portal/atleta/
Outra dúvida, os dados inseridos dentro do tipo de post atleta, como academia e cartel, não estão sendo exibidos, alguém me informar o que eu esqueci de acrescentar nos códigos?
- O tópico ‘Cadastro x Perfil x Tabela Classificação’ está fechado para novas respostas.