Pages

Subscribe:

Ads 468x60px

Labels

08/04/2016

Listar os Posts Wordpress mais Visualizados

Certo dia me deparei em um projeto com uma necessidade muito simples, porém com pouca documentação na internet sobre o mesmo.

Precisava listar os últimos 4 Posts de um site mais lidos e fiquei algumas horas tentando descobrir algum plugin que pudesse me ajudar e qual eu pudesse adaptá-lo para a necessidade de um cliente.

Esse plugin eu consegui achar.  Se trata deste abaixo com o link:
   - https://wordpress.org/plugins/wordpress-popular-posts/

A maior vantagem neste plugin foi a possibilidade de em uma página personalizada de um Theme que eu venha a desenvolver e em uma página personalizada criada, eu possa inserir os critérios de Post_Type personalizados.
Para o exemplo que fiz criei os campos personalizados que precisava com o uso dos seguintes plugins:

  - https://br.wordpress.org/plugins/advanced-custom-fields/

E para que fique todos os campos personalizados relacionados a um Post Type personalizado, uso o seguinte plugin:

  - https://wordpress.org/plugins/custom-post-type-ui/

Embora o propósito deste artigo não seja detalhar o uso e criação dos campos personalizados e   post types eu estarei mostrando alguns codigos com o uso do get_fields() método na adaptação do bloco personalizado de "Posts mais Vistos".

Então a personalização do bloco, por exemplo na Home (index.hp de seu theme ou outro).  o parametro PHP de chamada do plugin seria este aqui:

<?php
$contPersonalizado = '<div class=\'col-md-3\' id=\'id-bloco-ultimos\'>
                  <div class=\'box-empreendimento-small\'>
                            {IMAGEM_DESTAQUE}
                          <div class=\'caption bottomcap-small\'>
                                  <h3>{tipo}</h3>
                                 <h4> {text_title}</h4>
                                 <p> {texto_destaque_home}</p>
                                 <br>
                                 <a class=\'btn btn-default\' role=\'button\' href=\'{url}\'>ver mais</a>
                        </div>
                     </div>
               </div>';

     wpp_get_mostpopular( 'post_type="imoveis"&limit=5&post_html="'.$contPersonalizado.'"' ); ?>

Se observarmos acima eu adicionei dois campo personalizados que não existe em uma instalação crua do WordPress:

  - {IMAGEM_DESTAQUE} {tipo} {texto_destaque_home}

Enquanto que os campos:

  - {text_title}  => Título do site somente texto;
  - {url}  => Url direta para abrir o post listado;

Me empolguei um pouco, mas o plugin após instalado apresenta na administração as seguintes abas de configuração:

Na aba Parameters, temos os exemplos de como personalizaríamos a exibição:


Daí surge a pergunta:  - Como eu faço para acrescentar os campos a lista deste plugin.
A resposta é alterando o PHP do seguinte arquivo:

 - /seusite/wp-content/plugins/wordpress-popular-posts/wordpress-popular-posts.php

Após a linha 1868 adicione as variáveis de que precisa
         
            $postidd = $p->id;
            $tipo = getfield('tipo', $p->id);

na linha   1896, acrescemtamos a varível dentro do objeto de array:

             'postidd' => $postidd,
             'tipo'  => $tipo,

Edit line to add postidd in list

$pattern = '/\{(excerpt|summary|stats|postidd|title|image|thumb|thumb_img|rating|score|url|text_title|postidd|tipo|author|category|views|comments|date)\}/i';

E para finalizar vamos acrescentar os IFs depois da variável :
     
             array_map('strtolower', $matches[0]);

if ( in_array("{postidd}", $matches[0]) ) { 
     $string = str_replace( "{postidd}", $data['postidd'], $string ); 
}
if ( in_array("{tipo}", $matches[0]) ) { 
     $string = str_replace( "{tipo}", $data['tipo'], $string ); 
}


Agora o uso das chaves dentro do parâmetro '&post_html=' irão aceitar os dois campos criados.

Falou galera, espero que possa ajudar a muitos e até logo.


0 comentários:

Postar um comentário

Todos os comentários serão moderados e postados um tempo depois, comentários ofencivos serão deletados.