Dicas wordpress
Wordpres – Plugins úteis

Segue alguns plugins bem úteis.

1 – File Upload Types

Permite escolher as extensões que voce pode baixar.

Fornecedor: https://wpforms.com/

2 – MathML block

Permite incluir formulas matemáticas no wordpres

Fornecedor: http://tunedin.net/

3 – weDocs

Permite disponibilizar documentação dentro do wordpres.

Fornecedor: https://wedocs.co/?utm_source=wporg&utm_medium=banner&utm_campaign=author-uri

4 – WooCommerce

Permite vender produtos ou serviços no wordpres

Fornecedor: https://woocommerce.com/

5 – View STL

Permite visualizar modelos de peças 3D, criados para impressoras 3D.

Fornecedor: https://falldeaf.com/

6 – Emb3D Model Viewer

Permite incluir modelos de peças 3D como visualização nos produtos vendidos no WooCommerce.

Fornecedor: https://www.netfarm.it/

7 – Desativar Comentários

Desativa os comentários que geralmente só atrapalham seus posts com um monte de propaganda inútil.

Fornecedor: https://wpdeveloper.com/

IA PHP Python wordpress
Chatbot no wordpress – Parte 2

Agora que criei a página do Chatbot, vou comecar a preparar o recheio.

Definindo objetivo do Chatbot

A primeira coisa que precisamos saber é sobre o que devemos realizar nosso chatbot.

Bom irei falar sobre os projetos da maurinsoft.

Então o primeiro trabalho que irei precisar é criar simulados de perguntas, para facilitar isso, irei criar um conjunto de aplicações.

Neste post irei falar sobre o primeiro.

A melhor forma de criar um conjunto de perguntas é perguntando.

Então vou adicionar ao meu projeto uma tabela historico.

historico.sql

use maurinsoftdb;

create table historico (
  idhistorico int AUTO_INCREMENT PRIMARY KEY,
  pergunta varchar(200) not null,
  ip varchar(40),
  dtquest TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Agora que criei o espaço de armazenamento no banco, irei incluir no web service que processa a pergunta.

Fonte: runpy.php

<?php
    /*phpinfo();*/
	/*Registra webservice para processamento de jobs*/
	ini_set('display_errors', 'ON');
	error_reporting(E_ALL);

	header('Content-Type: application/json');  // <-- header declaration

	include "/var/www/html/python/connectdb.php";

	//header('Cache-Control: no-cache, must-revalidate');

$data = json_decode(file_get_contents("php://input"));

if($data){
		$pergunta = $dbhandle->real_escape_string($data->pergunta);
} else {
		$pergunta = $dbhandle->real_escape_string($_GET['pergunta']);
}

$ip = $_SERVER['REMOTE_ADDR']; /*Pega o ip do cliente*/

//echo "Inseriu";
$query= "INSERT into historico (pergunta, ip) values ( '". $pergunta. "', '".$ip."')";
$dbhandle->query($query); /*Executa*/

$json =  '{"rs":[';
if($pergunta){
  $command = escapeshellcmd('/var/www/html/python/nlp.py "'.$pergunta.'" > /var/log/proclog.log');
  $resposta = shell_exec($command);
  $resposta = str_replace (array("\r\n", "\n", "\r"), ' ', $resposta);

  if($resposta){
     $json = $json  . '{';
     $json = $json  .  '"pergunta":"'.$pergunta.'",';
     $json = $json  .  '"resposta":'.$resposta;
     $json = $json  .  '}';
  } else {
	 $json = $json  . '{';
	 $json = $json  .  '"pergunta":"'.$pergunta.'",';
     $json = $json  .  '"resposta":"'.'sem resposta'.'"';
	 $json = $json  .  '}';
  }
} else {
	$json = $json  . '{';
	$json = $json  .  '"pergunta":"'.$pergunta.'",';
    $json = $json  .  '"resposta":"'.'sem resposta'.'"';
	$json = $json  .  '}';
}
$json = $json  .  ']}';

echo $json
?>

Neste projeto que não irei falar muito, pois ja comentei sobre a maior parte em posts anteriores, fiz a inserção do código abaixo:

//echo "Inseriu";
$query= "INSERT into historico (pergunta, ip) values ( '". $pergunta. "', '".$ip."')";
$dbhandle->query($query); /*Executa*/	

Nela ao receber a pergunta armazenamos ela p pesquisa histórica.

Próximos passos

A seguir os próximos passos que iremos postar.

  • Iremos montar as questões que serão respondidas
  • Iremos cadastrar as respostas possíveis
  • Iremos associar as perguntas as respostas
  • Iremos gerar treinamento da nossa rede
  • Iremos codificar nosso código em python.
wordpress
Chatbot no wordpress

Chat - Manager

Chat bot online
Teste de Chatbot
Tutorial de CSS

{{app}}

{{msg}}

Objetivo

Neste tópico incluiremos o chatbot no wordpress, atraves de um shortcode.

Projeto GIT

O código deste projeto pode ser visto no git abaixo:

https://github.com/marcelomaurin/chatbot-wordpress

Ele permite criar um shortcode, que pode ser incluido nos posts.

Onde aparece uma pagina de chat, para que possa interagir.

[chatbot]

O chatbot pode ser incluído na página conforme o link acima.

O chatbot ja incluído nesta página

Nos próximos artigos iremos dar inicio ao código do chatbot, pois este esta apenas com a parte web atualmente.

wordpress
Personalização do WordPress

Os templates tags são informações obtidas do wordpress, que facilitam a captura das informações pelo site.

A lista de templates é muito variada, e pode ser vista no site:

https://codex.wordpress.org/Template_Tags

Mas podemos destacar alguns:

  • the_tags – lista de tags marcados no post.
  • the_category – lista de categorias marcadas no post.

Rodando Querys

É possível rodar uma query incorporada, lendo informações do banco do wordpress, conforme exemplo:

global $wpdb;

$sql = "select * from $wpdb->posts where post_status = 'publish'");

$listagem = $wpdb->get_results($sql);

foreach ($listagem as $value){
    echo $value->post_title;
    echo $value->post_content;
}

Usando WP_QUERY

O WP_QUERY é um query modificado, permitindo fazer filtragens por parâmetros.

$posts = new WP_Query('posts_per_page=1&orderby=rand');

while($posts->have_posts()): $posts->the_post();
    echo the_title();
    echo the_content();
endwhile;

Estarei dando maior foco no WP_Query em outros posts.

Tornar um WORDPRESS restrito

Uma forma simples de restringir o conteúdo de um wordpress, é exigir autenticação.

Isso pode ser visto, se incluirmos no arquivo header.php o seguinte fragmento:

<?php
if (!is_user_logged_in() ){
Header( "location:wp-admin/" );
}
?>

HOOK – Ganchos

Add_Filter

O Add_filter permite interceptar um dado, antes da sua visualização na tela.

Ele utiliza um callback, que é chamado na ocorrência do evento.

Exemplo, exibição do titulo

<?php
add_filter('the_title','view_title', 10,2);

function view_title($value, $id){
  if ($value== "NOVO") {
    $value = "NEW";
  }
  return value;
}
?>

No exemplo toda vez que um Titulo vier com nome novo, ele será substituído por NEW.

Add_action

O add_action é um evento que ocorre no momento da execução do wordpress, que é disparado durante a execução de alguma etapa de montagem da página.

Exemplo, podemos chamar a função inicializa, no momento da inicialização da página.

<?php
add_action('init','inicializa');

function inicializa(){
  echo 'Inicializou';
}

wordpress
Plugin Wordpres com AngulaJS – Parte 1

Neste artigo, irei apresentar um plugin desenvolvido com angularjs.

Apresentarei o desenvolvimento e detalhes de implementação.

A criação de um plugin é uma tarefa bem simples.

Plugin criado

Primeiro iremos criar uma pasta, e chamar do nome do nosso plugin.

Vamos chamar esse nosso exemplo de maurinsoft, conforme figura abaixo:

Pasta do projeto Maurinsoft

Agora iremos criar um arquivo maurinsoft.php, e incluir o fonte conforme referencia abaixo:

<?php
/*
Plugin Name: Maurinsoft
Plugin URL: http://maurinsoft.com.br/plugin/
Description: Plugin de Acesso a camera
Version: 1.0
Author: Marcelo Maurin Martins
Author URI: http://maurinsoft.com.br
Text Domain: maurinsoft
License: GPLv3
*/

/*Classe maurinsoft  -  Esta classe eh single instance , ou seja somente pode ser criada uma vez*/
class Maurinsoft{
	private static $instance; /*Pega a instancia da classe*/

	public static function getInstance(){
			if(self::$instance==NULL){
				self::$instance = new self(); /*caso nao exista cria uma instancia*/
			}
	}

	private function __construct(){ /*construtor da classe*/
			/** Add action do word press **/
			add_action('init',array($this,'maurinsoft_inicializa')); /* Ao inicializar */
			add_action('wp_footer',array($this,'maurinsoft_rodape')); /*informação adicional do rodape*/
			//remove_action('','');
			add_action('admin_enqueue_scrips',array($this,'add_css')); /*Registra o CSS especifico */

	}

	function add_css(){
		wp_register_style('maurinsoft',plugin_dir_url(__FILE__).'css/maurinsoft.css');
		wp_enqueue_style('maurinsoft');
	}

	function maurinsoft_aboutus(){
		echo "Maurinsoft 1.0";
	}

	function maurinsoft_rodape(){
		echo "<a href='http://maurinsoft.com.br'>maurinsoft.com.br</a> ";
	}

	function maurinsoft_inicializa(){
		if (is_user_logged_in()){
			//echo 'Logado!';
			} else {
			//echo 'Nao logado';
			}
	}

}  //Fim da classe

Maurinsoft::getInstance(); //Inicializa metodo construtor

Vamos entender este projeto:

Primeiramente, criamos uma classe Maurinsoft, onde criamos um método construtor que chama a função add_action.

O add_action é um callback, que permite vincular uma ação do wordpress a uma chamada de função.

Para quem não sabe o que é call back, recomendo ler o artigo abaixo:

http://maurinsoft.com.br/index.php/2021/02/11/callback-em-c/

O wordpress faz algumas chamadas, na primeira:

add_action('init',array($this,'maurinsoft_inicializa')); /* Ao inicializar */

Ele ao inicializar o wordpress, chama a função maurinsoft_inicializa.

Na segunda chamada:

add_action('wp_footer',array($this,'maurinsoft_rodape')); /*informação adicional do rodape*/

Ao chamar o wp_footer , ou seja o rodapé, ele chama a função maurinsoft_rodape, que inclui uma chamada ao rodapé.

E por fim,

add_action('admin_enqueue_scrips',array($this,'add_css')); /*Registra o CSS especifico */

Ao chamar os scripts ele carrega o css.

Que por sua vez tem 2 funções chamadas:

function add_css(){
		wp_register_style('maurinsoft',plugin_dir_url(__FILE__).'css/maurinsoft.css');
wp_enqueue_style('maurinsoft');
	}

A função wp_register_style, registra um arquivo css, e a wp_enqueue_style a usa.

É possível chamar diretamente através do código:

//<!-- Bootstrap -->
wp_enqueue_style('bootstrap.min','https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css');
wp_enqueue_style('bootstrap-theme.min','https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css');
wp_enqueue_script('bootstrap.min','https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js');

//<!-- AngularJS -->
wp_enqueue_script('angular.min','https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js');



//<!-- Jquery -->
//wp_enqueue_script('jquery.min.js','https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js');
wp_enqueue_script('jquery.min.js','https://code.angularjs.org/1.6.4/angular.js');


//<!-- Parte local-->
wp_enqueue_script('ctlr_test','/wp-content/plugins/comlink-application-clone-admin-page/js/ctlr_test.js');

wp_enqueue_style('style','/wp-content/plugins/comlink-application-clone-admin-page/style.css');

Por fim deixarei a lista de eventos associados ao add_action:

https://developer.wordpress.org/reference/hooks/

maurinsoft.com.br