quinta-feira, 31 de maio de 2012

Integração bbpress e wordpress

Aqui onde trabalho, surgiu a ideia de criar um fórum de discussão,
como tive algumas dificuldades na instalação, vou documentar passo a passo, a instalação e configuração

1° passo
baixe o bbpress, eu preferi instalar no site bbpress.org
crie um subdiretório dentro do diretório onde o wordpress estiver instalado no meu caso criei /forum
acesse o endereço geralmente http://seusite.com.br/forum
aparecera uma tela semelhante a tela da primeira instalação do wordpress, pedindo pra você, inserir os dados de acesso do banco de dados, você tem que inserir as mesmas informações do wordpress, para a integração,

2° passo
aqui é onde vamos integrar os dados do wordpress + bbpress para que os dados enviados pelos cookies sejam os mesmos para que você possa logar simultaneamente nos dois sites, os valores abaixo podem ser pegos do seu arquivo wp-config.php que fica na raiz da instalação do wordpress


define('AUTH_KEY', ' valores do seu  wordpress');
define('SECURE_AUTH_KEY', ' valores do seu  wordpress');
define('LOGGED_IN_KEY', ' valores do seu  wordpress');
define('NONCE_KEY', ' valores do seu  wordpress');
define('AUTH_SALT', ' valores do seu  wordpress');
define('SECURE_AUTH_SALT', ' valores do seu  wordpress');
define('LOGGED_IN_SALT', ' valores do seu  wordpress');
define('NONCE_SALT', ' valores do seu  wordpress');


3° passo
após copiar os valores, essa parte é mais simples, você deve preenccher o nome do forum, a url, e a chave mãe da conta do usuario que vai ficar como super-administrador.

4° passo
após instalado você pode baixar a tradução para portugues, acessando o link, faça o upload do arquivo pt_BR.mo para a pasta forum/my-languages, caso essa pasta nao exista você pode cria-la.
Após isso você deve alterar a linha

define('BB_LANG',''); 

do arquivo bb-config.php para

define('BB_LANG','pt_BR'); 

pronto?
no meu caso ainda não, porque embora eu consiga logar nos dois sites simultaneamente, quando eu logo no wordpress e vou para o forum, em seguida tento acessar a administração do fórum, encontrava um problema, pois invés de carregar a administração do fórum ele simplesmente retornava para a pagina inicial do fórum, não retornando nenhum erro somente nao carregando a pagina do painel do admin, pesquisei um bocado, e enfim encontrei uma solução, baixei esse plugin e instalei ele no wordpress, ativei e na configuração, simplesmente inseri a url do fórum, no campo requerido e salvei, e pronto agora sim os dois estavam com logins de usuários integrados, utilizando a mesma base de dados, ou seja, inserindo um novo usuário em um ou em outro estará simultaneamente nos dois sistemas, e conseguia acessar o admin do fórum sem problemas,



é isso ai, espero ter ajudado
até a proxima







quarta-feira, 9 de maio de 2012

Paginação wordpress PageNavi

Bem hoje precisei paginar minhas paginas do blog, assim como a de produtos da loja virtual, entao instalei o plugin WP-PageNavi, muito facil de usar e personalizar, 
apos instalar você coloca a seguinte linha no local onde deseja que a paginação seja mostrada, 

<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); }?>

no meu caso inseri no index.php de meu tema que é onde o blog esta, e pronto a paginação mostrada, então removi essas linhas que mostravam os links padrões para posts antigos,


<?php next_posts_link(__('&laquo; Older Entries', 'kubrick')) ?>


<?php previous_posts_link(__('Newer Entries &raquo;', 'kubrick')) ?>


e resolvi meu problema com paginação




abraço até a proxima

sexta-feira, 4 de maio de 2012

Exigir login em pagina com retorno automatico

Hoje precisei criar uma função que quando o usuário visitasse uma pagina que por algum motivo precisasse que esse mesmo usuário estivesse logado para ter acesso a esse conteúdo.
um redirect seria simples, verifico se o usuário esta logado, se não mando para a pagina de login, para isso temos varias funções, a wp_redirect() do wordpress, a header do php daria um jeito nisso, porem para que ficasse mais profissional, e que após o login o usuário fosse redirecionado ao logar, com essa função isso é possivel, ao chama-la em uma página automaticamente o usuário vai ser direcionado para a pagina de login ja com a instrução de retorno após o login enviada pela url, ela deve ser adicionada no arquivo functions de seu tema, o codigo esta todo comentado e qualquer duvida é só deixar um comentário

function redireciona_login(){
$pagina_id = get_the_ID();
$urlFull = get_permalink();

//aqui removo a ultima barra do link para usar no redirecionamento
$url = substr_replace($urlFull, '', -1);

//a função urlencode trata o texto para o formato de link
$urlCompleto = 'http://site.com.br/wp-login.php?redirect_to=' . urlencode($url) . '&reauth=1';
echo "<script type=\"text/javascript\">window.location='$urlCompleto';</script>";
// echo $urlCompleto;
// header("location:$urlCompleto"); die();
// echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=$urlCompleto'>";
}





Aqui eu chamo a função, você pode colocar na pagina esse codigo e isso ja deve funcionar

 if (!is_user_logged_in()){
redireciona_login ();
}

quinta-feira, 3 de maio de 2012

Função para BreadCrumbs Wordpress

Tive que modificar os Breadcrumbs, de um plugin wiki que instalei aqui em minha aplicação wordpress,
então pesquisei, e achei algumas funções e plugins de breadcrumbs, porem precisava de uma função que poderia ser chamada de uma pagina ou outra, e que mostrasse todas as paginas mães relacionadas ao post,

achei esta que mostra todo o caminho, até a home, você coloca dentro do arquivo functions do seu tema, e chama ela nas paginas onde for necessario

function wsf_make_link ( $url, $anchortext, $title=null, $nofollow=false ) {  

   if ( $title == null ) $title=$anchortext;  
   $nofollow==true ? $rel=' rel="nofollow"' : $rel = '';   
  
   $link = sprintf( '<a class="incsub_wiki_crumbs" href="%s" title="%s" %s="">%s</a>', $url, $title, $rel, $anchortext );  
   return $link;  
}

function wsf_breadcrumbs( $sep = '/') {
 
    global $post;
 
   // Do not show breadcrumbs on home or front pages.
   // So we will just return quickly
   if((is_home() || is_front_page()) && (!$front_page))
      return;
 
    // Create a constant for the separator, with space padding.
    $SEP = ' ' . $sep . ' ';
 
  echo '
<div class="breadcrumbs">';
  $wiki_home = "http://ema.net.br/emawiki/";
  echo wsf_make_link( get_bloginfo('url'), 'Home', get_bloginfo('name'), true ) . $SEP;

  if(is_single()) {
    the_category(', '); echo $SEP;
    }
    elseif(is_page()) {
            $parent_id = $post->post_parent;
            $parents = array();
            while($parent_id) {
                $page = get_page($parent_id);
            $parents[]  = wsf_make_link( get_permalink($page->ID), get_the_title($page->ID) ) . $SEP;
                $parent_id  = $page->post_parent;
            }
            $parents = array_reverse($parents);
            foreach($parents as $parent) {
                echo $parent;
            }
   }
   // Wordpess function that echoes your post title.
   the_title();
     echo '</div>

';



até a próxima.