sexta-feira, 9 de novembro de 2012

Remover Menus painel administrativo do wordpress


Para remover menus do painel administrativo do wordpress use a função abaixo, onde irá ocultar de todos usuários os menus que você adicionar dentro de $restricted:

//Remover Menus
function remove_menus () {
global $menu;
$restricted = array(__('Dashboard'), __('Posts'), __('Links'), __('Pages'), __('Appearance'), __('Ferramentas'), __('Settings'), __('Tools'), __('Plugins'));
end ($menu);
while (prev($menu)){
$value = explode(' ',$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
}
add_action('admin_head', 'remove_menus'); 

quinta-feira, 8 de novembro de 2012

Personalizar o menu do wp_nav_menu wordpress

Caso você queira personalizar o wp_nav_menu, você pode utilizar um metodo legal, onde você remove o retorno padrão do wordpress para o seu retorno.

Segue um Exemplo que eu precisei usar em um cliente:

Classe para modificar o wp_nav_menu padrão onde deverá ficar em functions.php:

class description_walker extends Walker_Nav_Menu
{
function start_el(&$output, $item, $depth, $args)
{
global $wp_query;
global $post;
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
$class_names = $value = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$id_page = $post->ID;
if($post->ancestors){
$id_page = $post->ancestors[0];
}
if($item->object_id == $id_page){
$selected = 'current_page_item';
}
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
$class_names = ' class="'. esc_attr( $class_names ) . ' cat-'.$item->object_id.' '.$selected.'"';
$output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>';
$attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
$attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
$attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
$attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';
$prepend = '<strong>';
$append = '</strong>';
$description  = ! empty( $item->description ) ? '<span>'.esc_attr( $item->description ).'</span>' : '';
if($depth != 0)
{
$description = $append = $prepend = "";
}
$item_output = $args->before;
$item_output .= '<a'. $attributes .'>';
$item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append;
$item_output .= $description.$args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}
}

E o nav terá que ficar assim:
<?php wp_nav_menu( array('theme_location' => 'NOMEDOMENU', 'walker' => new description_walker() )); ?>

Espero ter ajudado.
dúvidas ou sugestões, poste abaixo.

Carregar core do wordpress em arquivo .php

Olá,

Para carregar o core do wordpress em um arquivo fora do theme, use:

include "wp-load.php";

Nisto tudo que for do core wordpress irá passar a ser usado neste arquivo também.
Espero ter ajudado!

Função para pegar conteúdo de uma única página

Dentro de functions.php no seu theme adicione:

/**
* Pegar conteudo de uma unica pagina
* @credits rhfcamp@gmail.com
* @since 1.0
* @return conteudo do post
*/
function get_first_page_content($id){
$page_id = $id;
$page_data = get_page($page_id);
return $page_data->post_content;
}


e para retornar o resultado será:

<?php echo get_first_page_content($ID_PAGE);?>

Função para desabilitar Atualização do core Wordpress

Para desativar a barra que avisa sobre atualização do Wordpress, basta adicionar isto no function.php dentro do seu theme:

/*
* Desabilitar atualizar wordpress
* By: www.brasilphp.com.br
*/
if ( !current_user_can( 'edit_users' ) ) {
add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
}

Remover barra de edição no topo do wordpress

Para remover a barra de edição rápida de conteúdo, basta adicionar isto ao seu function.php:

function my_function_admin_bar(){
  return false;
}
add_filter( "show_admin_bar" , "my_function_admin_bar");

quarta-feira, 9 de maio de 2012

Como usar Taxonomy e Posts Personalizados Wordpress


Há muitos tutoriais sobre como registrar posts e taxonomia personalizada, porém não achei nenhum que mostre (de uma forma clara e objetiva)como usá-los no desenvolvimento de um tema, o que vamos ver neste tutorial é o seguinte:
  • Registrando um post e uma taxonomia personalizada
  • Como exibir a página do post(como o single.php) do post pernalizado criado
  • Como listar os termos de uma taxonomia customizada
  • Como exibir todos os posts de um termo da nova taxonomia criada
  • Como exibir todos os posts do tipo de post pernalizado criado
Vamos fazer uma simulação para uma area especifica de um site que terá artigos sobre Séries de TV(então o novo tipo de post será séries) e serão classificados por genêros(então nossa nova taxonomia será genêro), por exemplo, ficção cientifica, terror, comedia(esses são os termos)…

Registrando um post e uma taxonomia personalizada

Para registrar um post personalizado faça o seguinte:
Abra o arquivo functions.php do seu tema e digite o seguinte:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
add_action('init', 'series_register');
 
function series_register() {
 
    $labels = array(
        'name' => __('Séries'),
        'singular_name' => __('Séries'),
        'add_new' => __('Nova Série'),
        'add_new_item' => __('Adicionar nova serie'),
        'edit_item' => __('Editar Série'),
        'new_item' => __('Nova Série'),
        'view_item' => __('Ver Série'),
        'search_items' => __('Buscar Série'),
        'not_found' =>  __('Nenhuma série encontrada'),
        'not_found_in_trash' => __('Nada encontrado na Lixeira'),
        'parent_item_colon' => ''
    );
 
    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array('title','editor')
      ); 
 
    register_post_type( 'series' , $args );
}
Já registramos nosso novo post series (register_post_type( ‘series’ , $args );,  para saber mais sobre cada parâmetro da função clique no link –http://codex.wordpress.org/Function_Reference/register_post_type.
Agora vamos registrar nossa nova taxonomia genêro, no mesmo arquivo functions.phpdigite:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$labels = array(
    'name' => __( 'Gêneros'),
    'singular_name' => __( 'Gênero'),
    'search_items' =>  __( 'Buscar' ),
    'popular_items' => __( 'Mais usados' ),
    'all_items' => __( 'Todos os Gêneros' ),
    'parent_item' => null,
    'parent_item_colon' => null,
    'edit_item' => __( 'Add novo' ),
    'update_item' => __( 'Atualizar' ),
    'add_new_item' => __( 'Adicionar novo Gênero' ),
    'new_item_name' => __( 'Novo' )
  ); 
 
register_taxonomy('genero', array('series'),
    array(
    'hierarchical' => true,
    'labels' => $labels,
    'singular_label' => 'Gênero',
    'all_items' => 'Todos os Gêneros',
    'query_var' => true,
    'rewrite' => array( 'slug' => 'genero' ))
    );
E importante observar a linha -  ‘rewrite’ => array( ‘slug’ => ‘genero’ )) – onde é reescrito a slug da taxonomia, se você quizer pode deixar ‘rewrite’ => array( ‘slug’ => ‘series/genero’ )) , assim a url fica mais organizada, por exemplo,http://www.dominio.com/series/genero/drama/ e nãohttp://www.dominio.com/genero/drama/ o que ficaria estranha, porém caso você precise usar essa taxonomia em mais de um post personalizado, irá dar problema.
para saber mais sobre cada parâmetro clique no link –http://codex.wordpress.org/Function_Reference/register_taxonomy
Na barra lateral da sua area administrativa  deverá aparecer a seguinte estrutura:


Como exibir a página do post(como o single.php) do post pernalizado criado

Para exibir o post de um tipo de post personalizado basta ter o single.php no seu tema, porém caso você precise exibir este posts de uma forma diferente terá que criar um arquivo single-custom-post.php, então nosso arquivo se chamará single-series.php e será usada sempre que surgir uma url – http://www.dominio.com/series/slug-do-post

Como listar os termos de uma taxonomia customizada

Para listar os termos da taxonomia(genero) criada, basta as seguintes linhas:
1
2
3
<ul>
<?php wp_list_categories('taxonomy=genero'); ?>
</ul>
Você pode consultar mais parâmetros da função wp_list_category() no link – http://codex.wordpress.org/Template_Tags/wp_list_categories

Como exibir todos os posts de um termo da nova taxonomia criada

A exibição dos posts dos termos é semelhante aos dos posts simples, você só precisará criar um arquivo com o nome taxonomy-taxonomy.php, então nosso arquivo irá se chamar taxonomy-genero.php, assim quando for solicitado, por exemplo a url –http://www.dominio.com/genero/drama, o arquivo taxonomy-genero.php entrará em ação e listará todos os posts assim como o arquivo category.php faz.

Como exibir todos os posts do tipo de post pernalizado criado

Para exibir todos os posts do tipo de post series faremos o seguinte:
Crie um arquivo chamado series.php, abra ele e no topo do documento digite:
1
2
3
4
5
<?php
/*
Template Name: Séries
*/
?>
Assim criaremos uma pagina personalizada, então crie uma nova pagina chamadaSéries e em Atributos de página escolha o modelo Séries, veja a imagem a baixo.

Agora antes do loop, digite o seguinte:
1
<?php query_posts( array( 'post_type' => 'series' ) );?>
onde post_type => series, indica o post que será chamado, que no nosso caso éseries, para consulta outros parâmetros da função query_posts() acesse –http://codex.wordpress.org/Function_Reference/query_posts.
Nota:
Caso apareça erro 404 ao tentar carregar a alguma pagina, reescreva seu arquivo.htaccess indo em configurações > link permanentes .
É isso pessoal, há muita coisa para ser explicado ainda, mas ficará para outro post, essas novas funções não são um assunto muito complexo e sim muito amplo, dando a possibilidade de fazer muitas coisas, quem tiver algo a perguntar e/ou a acrecentar não hesite em colocar nos comentários.
Fonte: Marcelo Torres