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.

quarta-feira, 11 de abril de 2012

Filtrar produtos por nivel de usuario

O wordpress trabalha com niveis de usuario, que vao de 0 a 10, sendo 0 leitor e 10 administrador
aqui você pode ver esses niveis, peguei do wordpress

Capability Administrator Editor Author Contributor Subscriber
level_10
level_9
level_8
level_7
level_6
level_5
level_4
level_3
level_2
level_1
level_0

User Level to Role Conversion

embora nao seja mais utilizado pelo WP, ainda esta disponivel, e pode ser utilizado de uma forma bem util você consegue pegar qual o nivel do usuario logado através da seguinte função

if (is_user_logged_in()){
  $current_user = wp_get_current_user();
$user_id = $current_user->ID;
$user_info = get_userdata( $user_id); 
$user_level = $user_info->user_level;
$username = $user_info->user_login;
$first_name = $user_info->first_name;
$last_name = $user_info->last_name;
  }
para se mexer nesses niveis e criar novas capacidades dentro do blog utilizei o plugin


dentro do arquivo loop-products-cat.php na pasta woocommerce que é copiada para seu tema no momento da instalação, você pode colocar o seguinte codigo

<?php 

global $woocommerce, $woocommerce_loop, $product_category_found; 

$product_category_found = false;

?>

<?php 

foreach ($product_categories as $category) :

if ($category->parent != $product_category_parent) continue;

$product_category_found = true;

$woocommerce_loop['loop']++;
//informações do usuario
if (is_user_logged_in()){
  $current_user = wp_get_current_user();
$user_id = $current_user->ID;
$user_info = get_userdata( $user_id); 
$user_level = $user_info->user_level;
$username = $user_info->user_login;
$first_name = $user_info->first_name;
$last_name = $user_info->last_name;
  }
//vejo nivel de usuario e digo se ele pode ou nao ver alguma pagina
$restrito = '';
if($user_level < 3){
//aqui eu digo quais páginas usuários de nível menor que 3 não podem ver através do titulo da categoria
$restrito = array("Materiais de apoio","Impressos","Brindes","Presentes");
}
//se for diferente do array acima aparece caso seja menor que 3 o nível de usuário
if (!in_array($category->name, $restrito)){
?>
<li class="product sub-category <?php if ($woocommerce_loop['loop']%$woocommerce_loop['columns']==0) echo 'last'; if (($woocommerce_loop['loop']-1)%$woocommerce_loop['columns']==0) echo 'first'; ?>">

<?php do_action('woocommerce_before_subcategory', $category); ?>

<a href="<?php echo get_term_link($category->slug, 'product_cat'); ?>">

<?php do_action('woocommerce_before_subcategory_title', $category); ?>

<h3><?php echo $category->name; ?> <?php if ($category->count>0) : ?><mark class="count">(<?php echo $category->count; ?>)</mark><?php endif; ?></h3>

<?php do_action('woocommerce_after_subcategory_title', $category); ?>

</a>

<?php do_action('woocommerce_after_subcategory', $category); ?>

</li><?php
}
endforeach;
?>

dessa forma você coloca dentro do array quais categorias os usuarios que nao tem niveis de permissao podem ver, no meu caso utilizei pq temos franquias e somente elas podem ver algumas paginas e clientes nao.

essa foi mais uma necessidade que tive e essa foi a forma encontrada, pode ser que você encontre outra, se sim, avise para que possamos um ajudar o outro

até a proxima

Documentação php Extensão para Chrome e firefox


Uma extensão para chrome, para acessar rapidamente a documentação do php, digitando o nome da função, a extensão lista funções similares o que ajuda na localização da documentação da função desejada do php.
pode ser obtida no link
https://chrome.google.com/webstore/detail/kfiahljocaflpaiopilgpiochncgdnhd?hl=pt-br

um similiar para firefox pode ser obtido no link abaixo
https://addons.mozilla.org/pt-BR/firefox/addon/php-developer-toolbar/




segunda-feira, 2 de abril de 2012

Miniaturas woocommerce

Então, tive recentemente um problema com as miniaturas dos produtos no woocommerce, elas apareciam corretamente porém quanto geradas pelo WP ela apareciam alinhadas pela base, e como vendemos relatorios aqui precisava que o alinhamento fosse feito pelo topo pesquisei muito mas não encontrei algo que me ajudasse então modifiquei a função do woocommerce da seguinte forma.

Dentro do arquivo functions de seu tema coloque o seguinte codigo



function woocommerce_get_product_thumbnail( $size = 'shop_catalog', $placeholder_width = 0, $placeholder_height = 0 ) {
global $post, $woocommerce;

if (!$placeholder_width) $placeholder_width = $woocommerce->get_image_size('shop_catalog_image_width');
if (!$placeholder_height) $placeholder_height = $woocommerce->get_image_size('shop_catalog_image_height');

// if ( has_post_thumbnail() ) return get_the_post_thumbnail($post->ID, $size);
if ( has_post_thumbnail() ) return the_post_thumbnail(thumbnail);
else return '<img src="'.$woocommerce->plugin_url(). '/assets/images/placeholder.png" alt="Placeholder" width="'.$placeholder_width.'" height="'.$placeholder_height.'" />';
}

notem que tem uma linha comentada
// if ( has_post_thumbnail() ) return get_the_post_thumbnail($post->ID, $size);

foi aqui que mudei para
               if ( has_post_thumbnail() ) return the_post_thumbnail(thumbnail);

e assim as miniaturas se alinham a partir do topo, criando a função dentro de seu tema ela sobrepõe a função que esta no woocommerce-template.php na pasta do plugin woocommerce

espero ter ajudado alguem que tenha o mesmo problema,
até outro problema que consiga encontrar solução

terça-feira, 27 de março de 2012

Remover acentos com php

Procurei muito por uma função que funcionasse bem, copiei e testei varias e no fim acabei criando uma bem simples que funciona muito bem segue abaixo
<?php

function remover($str){
$remover = array(
"À" => "A",
"Á" => "A",
"Ã" => "A",
"Â" => "A",
"É" => "E",
"Ê" => "E",
"Í" => "I",
"Ó" => "O",
"Õ" => "O",
"Ô" => "O",
"Ù" => "U",
"Ú" => "U",
"Ü" => "U",
"à" => "a",
"á" => "a",
"ã" => "a",
"â" => "a",
"é" => "e",
"ê" => "e",
"ì" => "i",
"í" => "i",
"ó" => "o",
"õ" => "o",
"ô" => "o",
"ú" => "u",
"ü" => "u",
"ç" => "c"
);
return strtr($str, $remover);
}
?>
para utilizar é muito simples
<?php
echo remover($VariavelComAcento);
?>

quinta-feira, 15 de março de 2012

Pagina de login personalizada

Aqui eu monto através de uma tabela, um formulário de login facilmente personalizável, com conhecimentos básicos de HTML  e CSS, para uma página de login personalizado.


<table border="0" style="margin:0 auto; width:550px">
        <form name="loginform" id="loginform" action="<?php echo esc_url( wp_login_url( $_SERVER['REQUEST_URI'] ) ); ?>" method="post">
        <tr>
            <td colspan="3" align="center">      
           <h4>Você não possui autorização para ver essa página</h4> para acessar faça o login abaixo<br />
            </td>
        </tr>
        </tr>
        <tr>
        <td>
Nome:
        </td>
        <td colspan="2">
        <input type="text" name="log" id="user_login" value="<?php echo attribute_escape(stripslashes($user_login)); ?>" size="20" tabindex="10" placeholder="Digite aqui seu nome"/>
        </td>
        </tr>
<tr>
        <td >
       Senha:
        </td>
            <td colspan="2" >
           <input type="password" name="pwd" id="user_pass" value="" size="20" tabindex="20" placeholder="Digite aqui sua senha" /><?php do_action('login_form'); ?></div>
            </td>
        </td>
        <tr>
        <td>
        </td>
        <td>
       <a href="<?php echo wp_lostpassword_url( get_bloginfo('url') ); ?>" title="Lost Password">Esqueceu sua senha?</a>
       <?php /* | <a href="<?php bloginfo('url'); ?>/wp-login.php?action=register">Registrar-se</a>*/ ?>
        </td>
        <td>
<input name="rememberme" type="hidden" id="rememberme" value="forever" tabindex="90" />
<input type="submit" name="wp-submit" id="wp-submit" value="<?php _e('Login'); ?>" tabindex="100" />
</form>
        </td>
</tr>
        </table>

Mostrando dados do usuário


colocando os dados que estão abaixo dentro de uma pagina no template
podemos mostrar o gravatar, e dar a opção ao usuário de entrar na pagina minha conta

<div>
        <!-- Avatar -->
        <div><?php echo get_avatar($user_ID, 90); ?></div>
        <h4>Usuario</h4>
        <!-- Saudação boas vindas-->
        <div><strong><?php global $current_user;
         get_currentuserinfo();
         echo 'Ola ' . $current_user->user_login . "\n";
        ?>,</strong></div>
        <!-- Ingresar a su perfil -->
        <div><img src="<?php bloginfo( 'template_url' );?>/images/login/my_account.png"><a href="<?php bloginfo('url');?>/wp-admin/profile.php">Minha conta</a></div>
        <!-- Cerrar Sesión -->
        <div><img src="<?php bloginfo( 'template_url' );?>/images/login/logout.png"><a href="<?php echo esc_url( wp_logout_url( $_SERVER['REQUEST_URI'] ) ); ?>" title="logout">sair</a></div>
</div>

caso queira pegar mais dados aqui tem mais outro código, que confere se o usuário esta logado, e em cima desses dados mostra, id do usuário, informação, nível dentro de parâmetros de administração, nome de usuário, nome e sobrenome, é bastante útil para utilizar como filtro em paginas que você queira que somente usuários com certos níveis de acesso, possam acessar o conteúdo


if (is_user_logged_in()){
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
$user_info = get_userdata( $user_id);
$user_level = $user_info->user_level;
$username = $user_info->user_login;
$first_name = $user_info->first_name;
$last_name = $user_info->last_name;

}

quinta-feira, 16 de fevereiro de 2012

WP E-commerce vs Woocommerce

Passei uma semana num dilema, qual o melhor maneira para criar uma loja virtual vinculada ao Wordpress, existem inúmeras plataformas openSource, dentre as mais usadas a Prestashop e a Magento, se seu objetivo é montar um portal de compras on-line recomendo qualquer uma dessas duas plataformas, pois as duas tem bastante material e tutoriais pela web. 
Porem precisava de uma plataforma que pudesse ser facilmente integrada com o WP, então descartei, essas plataformas e comecei a pesquisar quanto a plugins para WP, o primeiro que encontrei foi o WP E-commerce, a principio pareceu uma ótima opção, tendo vários complementos, e plugins extras para melhorar o funcionamento da loja, então instalei a loja que automaticamente se ajustou ao meu tema, e ai que começou minha semana de merda, como uso url amigáveis para poder otimizar meu SEO, a loja simplesmente não funcionava, antes de colocar ela em meu site, fiz inúmeros testes locais, porem minha instalação do xampp não esta funcionando com url amigável, e localmente a loja funcionou perfeitamente, mas quando coloquei ela no ar, parou, pesquisei muito, e acabei encontrando algumas pessoas com o mesmo problema, entrei no fórum do plugin e encontrei mais alguns tópicos relatando o mesmo problema, na minha opinião tudo bem ter problemas, novas versões servem pra isso, resolver problemas das anteriores, porem quando temos varias pessoas com o mesmo problema, e nenhuma resposta em relação a eles, fica meio difícil ter confiança, até mesmo quando você encontra tópicos de pessoas que adquiriram plugins premium que são pagos, tendo problemas sem solução nem posição dos desenvolvedores, então tentei resolver e debugar o tema até que encontrei que o erro estava no ajax do carro de compra, direcionei a busca em cima desse problema, e encontrei mais pessoas que chegaram ao mesmo lugar que eu, também sem solução, então larguei de mão esse plugin, e fui atras de outros, até que encontrei o woocommerce.
pra quem não conhece a Woo themes faz inúmeros temas e plugins para o WP, sei porque já utilizei um deles em um site que desenvolvi. 
Então instalei o woocommerce, e botei pra funcionar e funcionou perfeitamente, criei minha loja, cadastrei produtos, efeituei uma compra teste, foi encaminhado um e-mail tudo corretamente, fácil personalização através de CSS. e todo o controle é simples, através de alguns poucos menus, você se encontra pois é tudo intuitivo.
Em minha woocommerce é muito melhor que o wp e-commerce, claro que esta é somente minha opinião, espero ter esclarecido alguma dúvida ou ter ajudado em sua escolha.

wp-admin-bar personalizada (custom wp-admin-bar)

Bom hoje vou mostrar como personalizei minha wp-admin-bar, fiz algumas alterações para alcançar minha necessidade:
  • adicionar novos links
  • manter a barra sempre visível
  • restringir acessos a alguns links ja que a barra esta sempre visível
  • trocar a logo do Wp da barra por uma de minha escolha
  • alterar CSS
basicamente foi isso oque fiz até agora,
então o codigo ficou  da seguinte forma
Primeiro removo os links padroes da wp admin bar

// Remove o link antigo da Admin Bar WP 3.3
function fb_remove_oldlogo_adminbar() {
global $wp_admin_bar;
  $wp_admin_bar->remove_menu('wp-logo');
  $wp_admin_bar->remove_menu('new-content');
  $wp_admin_bar->remove_menu('comments');
  $wp_admin_bar->remove_menu('updates');
  $wp_admin_bar->remove_menu('site-name');
  $wp_admin_bar->remove_menu('edit');
}

Aqui eu coloco os links personalizados


function menuTopo() {
global $wp_admin_bar;
$wp_admin_bar->add_menu( array(
'id' => 'Home-link',
'title' => ' Titulo do link',
'href' => $blog_link
) );
$wp_admin_bar->add_menu( array(
'parent'=> 'Home-link',
'id' => 'admin-link',
'title' => 'Administração',
'href' => ' http://seusite.com.br/wp-admin',
'meta' => array( 'class'=>'novo-link', 'title'=>'Ir administração' )
) );
//o atributo parent é para colocar o menu como subitem na lista criando um menu dropDown
//esse atributo tem que ser viculado ao id do menu pai

$wp_admin_bar->add_menu( array(
'id' => 'Loja-link',
'title' => 'Loja',
'href' => 'http:// seusite.com.br/loja',
'meta' => array( 'class'=>'novo-link', 'title'=>'Ema Store' )
) );
$wp_admin_bar->add_menu( array(
'id' => 'Forum-link',
'title' => 'Forum',
'href' => 'http://seusite.com.br/foruns/',
'meta' => array( 'class'=>'novo-link', 'title'=>'Forum' )
) );
}
}


Agora para colocar a minha logo no lugar da logo do Wordpress na wp-admin-bar 
crio um classe css, no caso utilizei a logo em png com fundo transparente



#wp-admin-bar-Home-link{
background: url("http://seusite.com.br/images/imagem.png") no-repeat scroll 5px -1px transparent !important;
    padding: 0 0 0 21px !important;
    width: 50px !important;
}




segunda-feira, 16 de janeiro de 2012

admin_bar personalizada


Aqui segue um pequeno tutorial de personalização a wp_admin_bar disponivel a partir da versao 3.1 do wordpress


adicione esse codigo no final do arquivo functions.php de seu tema e modifique conforme sua necessidade


function meu_menu(){
global $wp_admin_bar;
//aqui crio o primeiro menu
//coloco dentro de um array id, title, href, meta
//id fica como referencia do link no caso de ter outros sublinks
//title é o nome do link
//href o endereço para onde o link aponta
//meta tem o atributo title do link que da um hint ao passar o mouse
$wp_admin_bar-add_menu( array(
'id' => 'twitter-link',
'title' => 'Twitter',
'href' => 'http://www.twitter.com/maluco456',
'meta' => array( 'class'='novo-link', 'title'='Twitter do alexndre' )
) );
//aqui crio um sublink em relação ao twitter

$wp_admin_bar-add_menu( array(
'parent' => 'twitter-link'
'id' => 'twitter-link',
'title' => 'Twitter',
'href' => 'http://www.twitter.com/maluco456',
'meta' => array( 'class'='novo-link', 'title'='Twitter do alexndre' )
) );

//aqui crio um segundo link
$wp_admin_bar-add_menu( array(
'id' => 'atalho-editor',
'title' => 'Editor',
'href' => 'http://duvidaswordpress.blogspot.com',
'parent' => 'appearance'
) );
        $wp_admin_bar-add_menu( array(
'id' => 'atalho-editor',
'title' => '<img src="endereço/img/imagem.jpg" alt="texto alternativo da imagem"',
'href' => 'http://duvidaswordpress.blogspot.com'
) );

}

add_action( 'admin_bar_menu', 'meu_menu', 90 );

integração de login moodle e wordpress


Neste post mostro como consegui logar simultaneamente no moodle e no wordpress.
as base de dados não estão interligadas, ainda nao consegui chegar nessa parte, os usuarios tem que estar presente nas duas databases, com login e senhas iguais.
é meio amador mas da pra quebrar o galho ate conseguir interligar os dois de uma maneira melhor...


segue codigo php abaixo


<?php
//acessando a Base de dados pelo wp-config
include_once("../wp-config.php");
/*
includes para classes da validação no wordpress com o class-phpass.php
*/
include_once("../wp-includes/class-phpass.php");
include_once("../wp-includes/pluggable.php");
if(!$_POST)
{
//crio o formulario
?>
<form method="post" action="" name="login">
<div id='content_login'>
<h1>Login</h1>
<table>
<tr>
<td>Username</td>
                <td><input type="text" name="username" value="" /></td>
</tr>
<tr>
<td>Password</td>
                <td><input type="password" name="password" value="" /></td>
</tr>
<tr>
<td><input type="submit" name="login" value="Login" /></td>
</tr>
</table>
</div>
</form>
<?php
}
else {
//recebo as variaveis do formulario pelo metodo post ao clicar em login
$username = mysql_escape_string($_POST['username']);
$password = mysql_escape_string($_POST['password']);
// seleciono os dados da tabela de usuarios no meu caso é wp-users, mas dependendo da instalação isso pode mudar 
// esse é o motivo de usar a variavel $table_prefix que vem do wp-config
$query = mysql_query("SELECT * FROM ".$table_prefix."users WHERE user_login = '$username'");
//executo a query
$row = mysql_fetch_array($query);


//crio o novo objeto $wp_hasher
$wp_hasher = new PasswordHash(8, TRUE);
//puxo os dados da tabela com a codificaçao propria do wordpress
$password_hashed = $row['user_pass'];
//puxo o id do usuario
$user_id = $row['ID'];
        /*
abaixo vou checar se o password é igual em md5 ou na classe PasswordHash
        */
if($wp_hasher->CheckPassword($password, $password_hashed)
           || $password_hashed == md5($password)) {
//se der tudo certo nas verificações acima inicio a sessao colocando o logged_in
$_SESSION["logged_in"] = true;
//gravo os cookies de autenticaçao
wp_set_auth_cookie( $user_id, $remember = true, $secure ='' );
//mensagem dizendo que deu tudo certo
echo 'Login ok';
//daqui para baixo ainda ta em teste para logar simultaneo no moodle.
//te me dando alguns problemas pra integrar esses dois....
?>
    <html>
    <head>
    <script type="text/javascript">
//função de envio de formulario com  JS
//com direcionamento apos o envio da função
function submitform()
{
document.forms["moodle"].submit();
//aqui vc coloca a url do seu site
location.href="http://site.com.br";
}
</script>
    </head>
<!-- aqui na tagbody eu digo que quando a pagina carregar ela vai rodar a função js de envio dos dados do formulario -->    
    <body onload="submitform();">

<!-- vc tem que localizar onde esta a pasta login dentro do diretorio onde o moodle esta instalado  -->    

<form name="moodle" action="../uni/login/index.php" method="post">
    <input type="hidden" name="username" value="<?php echo $username; ?>"/>
        <input type="hidden" name="password" value="<?php echo $password; ?>"/>
    </form>
    </body>
    </html>
<?php
//caso de tudo certo daqui para baixo nao aparece, caso contrario o formulario aparece novamentte para uma nova tentativa de login

}
else {
?>
<form method="post" action="">
<div id='content_login'>
<h1 class='red'>Dados do usuario/password incorretos</h1>
<table>
<tr>
<td>Username</td>
                        <td><input type="text" name="username" value="" /></td>
</tr>
<tr>
<td>Password</td>
                        <td><input type="password" name="password" value="" /></td>
</tr>
<tr>
<td><input type="submit" name="login" value="Login" /></td>
</tr>
</table>
</div>
</form>
<?php
}
}
?>