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 campoEscolha as datas da regra 2:
Data: ___________________
Data: ___________________
Add novo campoEscolha 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
-
Oi @tiago-mattos,
Por partes:
- 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.
- Qual é o plugin com que você está tentando trabalhar?
- 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:
- Sobre hooks no WP
- Sequência de hooks executados a cada exibição do painel
- Action admin_init no Codex
- Action admin_init no Developer
- update_option e get_option
Eu escrevi há um tempo sobre hooks no WP, veja se te ajuda também.
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?
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); } }
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).
- O tópico ‘Criar uma página no painel para receber dados de variaveis’ está fechado para novas respostas.