Suporte » Desenvolvendo com WordPress » Criar uma página no painel para receber dados de variaveis

  • Olá,

    Editei um plugin e inclui nele algumas variáveis. Muitas delas para datas.

    Por exemplo:
    Na data 01/01/2018 o plugin vai se comportar da maneira x.

    Como eu posso criar uma página no painel para receber os dados destas variáveis? Ou seja, receber estas datas?

    Gostaria que no painel ficasse mais ou menos assim:

    Escolha as datas da regra 1:
    Data: ___________________
    Data: ___________________
    Add novo campo

    Escolha as datas da regra 2:
    Data: ___________________
    Data: ___________________
    Add novo campo

    Escolha o numero de dias para regra 1: _____
    Escolha o numero de dias para regra 2: _____

    Seria mais ou menos isso.
    Alguém me salva? rs

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • Moderador Felipe Elia

    (@felipeelia)

    Oi @tiago-mattos,

    Por partes:

    1. Quando você diz que editou um plugin, você quer dizer que alterou o código-fonte dele? Não faça isso porque você vai perder suas alterações na próxima atualização do plugin. Tente usar hooks (actions e filters) para isso.
    2. Qual é o plugin com que você está tentando trabalhar?
    3. O que você quer dizer com “receber estas datas”? O usuário está enviando através de um formulário e você quer manipular o que ele enviou?

    Mesmo sem entender completamente o seu problema, posso te recomendar dar uma olhada na action admin_init, por exemplo. Ela vai permitir que você execute qualquer código antes de exibir o painel. Com um código do tipo:

    function wpbr78483_admin_init() {
    	if ( isset( $_POST['variavel'] ) ) {
    		update_option( 'option_do_meu_plugin', sanitize_text_field( $_POST['variavel'] ) );
    	}
    }
    add_action( 'admin_init', 'wpbr78483_admin_init' );

    Você pode testar se a variável foi enviada e guardá-la em uma option. Depois é só usar get_option( 'option_do_meu_plugin' ) para pegar o valor.

    Alguns links que podem te ajudar a entender melhor:

    Eu escrevi há um tempo sobre hooks no WP, veja se te ajuda também.

    Criador do tópico Tiago Mattos

    (@tiago-mattos)

    Oi @felipeelia,

    Obrigado pela ajuda!

    1. Sim, alterei o codigo fonte. Sempre vai ser usando hooks para adicionar um código extra ao plugin? Sendo com php ou até estilo CSS?
    2. O plugin é o AweBooking (https://wordpress.org/plugins/awebooking/). Eu consegui adicionar algumas coisas pra deixar ele do jeito que eu precisava. Mas ainda to com esse problema de ter editado o código e falta a tela para o funcionário colocar as variáveis (explico melhor aqui em baixo).

    3. Não. Tem dois tipos de usuário: Cliente e Funcionário.
    Eu quero criei uma regra: sempre que o cliente escolher a data XX-XX-XXXX vai ter um comportamento diferente. Para o cliente está tudo funcionando certo. Para o funcionário que eu não tenho uma tela amigável, tem que alterar no código. A minha ideia agora, é permitir que o Funcionario informe as datas que o plugin vai ter o comportamento diferente, sem que seja necessário alterar no codigo.

    Exemplo: Dia 30/03/2018 é um feriado. Então fiz uma condicional para que se o cliente escolhesse esta data, os preços teriam um adicional de x%. Mas fiz isso no código e devo dar a opção ao funcionário de colocar estas datas e depois a porcentagem também no Painel do WordPress.

    Vou ver com calma também os links que você citou.

    Mas deu pra entender mais ou menos meu problema?

    Criador do tópico Tiago Mattos

    (@tiago-mattos)

    Segue um exemplo do código:

    
    		//codigo abaixo verifica se a data escolhida pelo cliente é igual a data da promoção
    		//dias da promocao Ferias inverno 2018
    		$dias = array("15","16","17","18","19","22","23","24","25","26");
    		$dias_out=array("16","17","18","19","20","23","24","25","26","27");
    
    		//checkin permitido na promoção
    		$cond1=null;
    		foreach ($dias as $key => $value) {
    			//checkin é igual a um dia da promoção?
    			if("2018-07-".$value==$checkin){
    				$cond1=true;
    				break;
    			}
    			else{
    				$cond1=false;
    			}
    		}
    		//checkout permitido na promoção
    		$cond2=null;
    		foreach ($dias_out as $key => $value) {
    			//checkin é igual a um dia da promoção?
    			if("2018-07-".$value==$checkout){
    				$cond2=true;
    				break;
    			}
    			else{
    				$cond2=false;
    			}
    		}
    
    		//PROMOÇÃO OUTONO 2018
    		$fevereiro= array("01","02","03","04","05","06","07","08","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28");
    		$marco= array("01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26");
    		$abril= array("01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","24","25");
    		$maio= array("01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28");
    
    		//checkin permitido na promoção
    		foreach ($fevereiro as $key => $value) {
    			//checkin é igual a um dia da promoção?
    			if("2018-02-".$value==$checkin){
    				$cond1=true;
    				$cond2=true;
    				break;
    			}
    		}
    		foreach ($marco as $key => $value) {
    			//checkin é igual a um dia da promoção?
    			if("2018-03-".$value==$checkin){
    				$cond1=true;
    				$cond2=true;
    				break;
    			}
    		}
    		foreach ($abril as $key => $value) {
    			//checkin é igual a um dia da promoção?
    			if("2018-04-".$value==$checkin){
    				$cond1=true;
    				$cond2=true;
    				break;
    			}
    		}
    		foreach ($maio as $key => $value) {
    			//checkin é igual a um dia da promoção?
    			if("2018-05-".$value==$checkin){
    				$cond1=true;
    				$cond2=true;
    				break;
    			}
    		}
    
    
    		//FERIADO SÃO JORGE (VALOR DE DUAS DIÁRIAS E MEIA PARA SAÍDA ANTES DO FERIADO)
    		if ($checkin=="2018-04-20" && $checkout=="2018-04-22") {
    			$valor_extra=1.42858;
    			$price=$price->multiply($valor_extra);
    		}
    
    		//FERIADO DIA DO TRABALHO (3,5 DIÁRIAS)
    		if (($checkin=="2018-04-28" && $checkout=="2018-05-01")||($checkin=="2018-04-27" && $checkout=="2018-04-30")) {
    			$valor_extra=1.16667;
    			$price=$price->multiply($valor_extra);
    		}
    		//FERIADO DIA DO TRABALHO (2 DIÁRIAS)
    		if (($checkin=="2018-04-27" && $checkout=="2018-04-29")||($checkin=="2018-04-28" && $checkout=="2018-04-30")||($checkin=="2018-04-29" && $checkout=="2018-05-01")) {
    			$valor_extra=1.5;
    			$price=$price->multiply($valor_extra);
    		}
    
    
    			//se 1 ou 2 adultos e 0 ou 1 criança, preço base valendo.
    			if ($adults <3 and $children<2) {
    				$price=$price;
    			}
    			//primeira crianca cortesia
    			elseif ($adults<3 and $children>1) {
    				$chd=$children-1;
    				$pessoas_extras=($chd*0.25)+1;
    				$price =$price->multiply($pessoas_extras);
    			}
    			elseif($adults>2 and $children==0){
    				$adl=$adults-2;
    				$pessoas_extras=($adl*0.4)+1;
    				$price=$price->multiply($pessoas_extras);
    			}
    			else{
    				$chd=$children-1;
    				$pessoas_extras=(($adults-2)*0.4)+($chd*0.25)+1;
    				$price =$price->multiply($pessoas_extras);
    			}
    
    		}
    		//se não estiver dentro da promoção faça:
    		else if($cond1==false || $cond2==false){
    			//se 1 ou 2 adultos e 0 criança, preço base valendo.
    			if ($adults <3 and $children<1) {
    				$price=$price;
    			}
    			elseif ($adults<3 and $children>0) {
    				$chd=$children;
    				$pessoas_extras=($chd*0.25)+1;
    				$price =$price->multiply($pessoas_extras);
    			}
    			else{
    				$chd=$children*0.25;
    				$pessoas_extras=(($adults-2)*0.4)+($chd*0.25)+1;
    				$price=$price->multiply($pessoas_extras);
    			}
    		}
    
    Moderador Felipe Elia

    (@felipeelia)

    Oi @tiago-mattos,

    Não altere nada mesmo do plugin original, nem CSS. Crie um outro plugin, seu, e nele chame um outro arquivo CSS para sobrescrever as propriedades necessárias (ou, se for mais fácil, veja se é possível desabilitar a chamada pro CSS do plugin).

    Sobre o que você quer fazer, acho que entendi. O WordPress tem essa parte de opções (options) que escrevi na outra resposta com get_option(), update_option() e etc. A Settings API vai te ajudar bastante a construir essa tela para guardar as variáveis: veja aqui um exemplo de como construir uma página de opções (neste repositório tem outros códigos que podem te ajudar a construir esse plugin).

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • O tópico ‘Criar uma página no painel para receber dados de variaveis’ está fechado para novas respostas.