Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Helinho Coelho

Como fazer um Array Dinâmico dentro de uma Function?

Recommended Posts

Olá pessoal,

 

Estou precisando de uma ajuda com uma function que se encontra dentro da minha página functions.php

Esta função me retorna perfeitamente os registros de um array (registros que são inseridos pela functions.php através de um filtro) para dentro de um menu select na página do site (wordpress). Até aí tudo bem...

 

Mas o problema é que tenho que colocar manualmente os nomes dos produtos na functions.php...

 

Eu gostaria de retornar somente uma lista com apenas o nome dos produtos (woocommerce) dentro de um array Label => Value

 

Eu só preciso puxar dinamicamente o nome dos produtos de forma que imprima dentro do array conforme está abaixo em "$produtos"

function minha_lista_de_produtos($produtos, $args=array()) {

    $produtos = array(
		'Nome do Produto 1' => 'Nome do Produto 1',
		'Nome do Produto 2' => 'Nome do Produto 2',
		'Nome do Produto 3' => 'Nome do Produto 3',
		'Nome do Produto 4' => 'Nome do Produto 4',
		'Nome do Produto 5' => 'Nome do Produto 5'
    );

    return $produtos;

}

add_filter('lista-de-produtos', 'minha_lista_de_produtos', 10, 2);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa! Consegui resolver lendo várias publicações na net sobre o assunto, acabei montando e personalizando o meu código até conseguir e funcionou da seguinte forma:

function minha_lista_de_produtos() {
	
	$posts = get_posts( array( 'post_type' => 'product', 'posts_per_page' => -1, 'order'=> 'ASC', 'orderby' => 'title' ) );
	foreach ( $posts as $post ) {
		$label = $post->post_title; // será o rótulo do menu select option
		$value = $post->post_title; // será o valor do menu select option
    	$produtos[$label] = $value;
	}
    return $produtos;

}
add_filter('lista-de-produtos', 'minha_lista_de_produtos', 10, 2);

Este código serve perfeitamente como filtro para o plugin "Contact Form 7 - Dynamic Select Extension" criando assim um Menu Select (Multiple ou Dropdown) de forma dinâmica puxando todos os produtos da loja para ser escolhido e posteriormente enviado pelo formulário de contato.

 

O shortcode dentro do formulário do Contact Form 7 fica da seguinte forma:

[dynamicselect* meus-produtos multiple "lista-de-produtos"]

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.