Jump to content
Brunolerin

Adicionar um Produto "x" ao Carrinho Automaticamente qd o produto "Y" for adicionado

Recommended Posts

Tenho segunte código q adiciona o produto ao carrinho, mas somente quando chega a um valor deseja, mas eu preciso que adicione qd um produto y seja adiiona... veja o código:

 

/**
 * Add another product depending on the cart total
 */
add_action( 'template_redirect', 'add_product_to_cart' );
function add_product_to_cart() {
  if ( ! is_admin() ) {
		global $woocommerce;
		$product_id = 2831; //replace with your product id
		$found = false;
		$cart_total = 30; //replace with your cart total needed to add above item

		if( $woocommerce->cart->total >= $cart_total ) {
			//check if product already in cart
			if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) {
				foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
					$_product = $values['data'];
					if ( $_product->get_id() == $product_id )
						$found = true;
				}
				// if product not found, add it
				if ( ! $found )
					$woocommerce->cart->add_to_cart( $product_id );
			} else {
				// if no products in cart, add it
				$woocommerce->cart->add_to_cart( $product_id );
			}
		}
	}
}

 

Share this post


Link to post
Share on other sites
add_action( 'init', 'add_produto_ao_carrinho' );
function add_produto_ao_carrinho() {
	if ( ! is_admin() ) {
		global $woocommerce;
		$product_id = 4066; //ID do produto
		$product_id_principal = 4065; //inclui essa variavel q vai puxar o segundo produto pro carrinho
		$found = false;
		//verifica se o produto esta no carrinho (ok)
		if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) {
		//essa parte baixo faz o que?<<<<<<<< entendi q verifica o item que está no carrinho, certo?	
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
	// o que seria essa parte de ['data'] ? <<<<<<<<<<<<<< 
				$_product = $values['data'];
				if ( $_product->id == $product_id_principal ){
					$found = true;
					if ( $_product->id == $product_id )
						$found = true;
					Else{
					$woocommerce->cart->add_to_cart( $product_id );}//coloquei isso aqui
				
				}
			}
			// se o produto não for encontrado, adicione ele
			//if ( ! $found )
				//$woocommerce->cart->add_to_cart( $product_id );
		} //else {
			// se o produto não estiver no carrinho, adicione ele
			//$woocommerce->cart->add_to_cart( $product_id );
		//}
	}
}

Fiz assim e deu mais ou menos certo rs... pois ele identifica meu produto principal  e isso tá ok o problema é quando atualizo o carrinho, ele coloca novamente o produto

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By CrashRM
      Olá, preciso de ajuda e acredito que esse fórum possa ser uma luz.
      Estou com um projeto de um site que irá exibir informações de empresas, pois bem, ele foi feito em wordpress e utilizo o plugin wp all import para poder subir esses dados para o site via arquivo csv.
      Estava tudo funcionando bem, mas, conforme a base de dados foi subindo o site foi ficando lento e agora por várias vezes ele apresenta erro 500 (Internal Server Error Sorry, something went wrong) ao realizar buscas no site.

      Ao subir o arquivo csv, para cada linha do arquivo o plugin cria uma postagem nova no wordpress com as informações das colunas, ao total eu teria que subir 20 milhões de linhas e cada linha contem 27 colunas que são adicionadas como informações no post.

      O problema do erro 500 começou acontecer quando cheguei a um pouco mais de 1 milhão de empresas cadastradas.
       
      Não sou profissional no assunto, tudo que fiz foi através de pesquisas e estudos em sites e fóruns, então pode ser que tenha configurado algo errado ou o servidor é que não é o ideal... eis que minhas dúvidas são:
      - Preciso de um servidor melhor ou esse comporta?
      - A configuração do meu mysql (my.cnf) ou php.ini estão incorretas?
      - Devo colocar o banco de dados em um servidor específico? (tentei fazer na amazon, mas me perdi no meio do processo)
      - O que devo fazer?

      Segue as informações:
      Servidor: https://www.ovh.pt/vps/vps-cloud-ram.xml
      VPS Cloud RAM 2
      2 vCore(s); 2 GHz; 12 GB RAM; 50 GB SSD
      - Linux Ubuntu 16, php 7.3
      - Vestacp

      My.cnf
      [client] port=3306 socket=/var/run/mysqld/mysqld.sock [mysqld_safe] socket=/var/run/mysqld/mysqld.sock [mysqld] user=mysql pid-file=/var/run/mysqld/mysqld.pid socket=/var/run/mysqld/mysqld.sock port=3306 basedir=/usr datadir=/var/lib/mysql tmpdir=/tmp lc-messages-dir=/usr/share/mysql log_error=/var/log/mysql/error.log symbolic-links=0 skip-external-locking key_buffer_size = 4000M max_allowed_packet = 64M table_open_cache = 4096 sort_buffer_size = 64M read_buffer_size = 64M read_rnd_buffer_size = 128M myisam_sort_buffer_size = 128M thread_cache_size = 64 query_cache_size= 624M #innodb_use_native_aio = 0 innodb_file_per_table innodb_buffer_pool_size = 8000M max_connections=120 max_user_connections=30 wait_timeout=28800 interactive_timeout=58800 long_query_time=5 !includedir /etc/mysql/conf.d/ php.ini
      [PHP] engine = On short_open_tag = On precision = 14 output_buffering = 4096 zlib.output_compression = Off implicit_flush = Off unserialize_callback_func = serialize_precision = 17 disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, disable_classes = zend.enable_gc = On expose_php = Off max_execution_time = 300 max_input_time = -1 memory_limit = 2000M error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors = Off display_startup_errors = Off log_errors = On log_errors_max_len = 1024 ignore_repeated_errors = Off ignore_repeated_source = Off report_memleaks = On track_errors = Off html_errors = On variables_order = "GPCS" request_order = "GP" register_argc_argv = Off auto_globals_jit = On post_max_size = 1000M auto_prepend_file = auto_append_file = file_uploads = On upload_max_filesize = 50M max_file_uploads = 20 allow_url_fopen = On allow_url_include = Off default_socket_timeout = 60 pdo_mysql.cache_size = 2000 pdo_mysql.default_socket= sql.safe_mode = Off odbc.allow_persistent = On odbc.check_persistent = On odbc.max_persistent = -1 odbc.max_links = -1 odbc.defaultlrl = 4096 odbc.defaultbinmode = 1 ibase.allow_persistent = 1 ibase.max_persistent = -1 ibase.max_links = -1 ibase.timestampformat = "%Y-%m-%d %H:%M:%S" ibase.dateformat = "%Y-%m-%d" ibase.timeformat = "%H:%M:%S" [MySQLi] mysqli.max_persistent = -1 mysqli.allow_persistent = On mysqli.max_links = -1 mysqli.cache_size = 2000 mysqli.default_port = 3306 mysqli.reconnect = Off mysqlnd.collect_statistics = On mysqlnd.collect_memory_statistics = Off  
      Espero que alguém possa me dar uma luz para resolver esse problema.
      Desde já obrigado 
    • By Agatacat
      Estou usando o Contact Form 7 e o plugin CF7 SKINS,  preciso deixar alguns campo lado a lado:
      <label> Cidade
      [text* text-317] </label>
      <label> Estado
      [text* text-317] </label>
      <label> Código Postal
      [text* text-317] </label>
      <label> Telefone para Contato
      [tel* tel-459] </label>
      <label> Seu e-mail
      [email* your-email] </label>
      Assim que está atualmente, e os campos ficam um embaixo do outro, gostaria de deixar os campos Cidade e Estado um do lado do outro, alguém saberia como fazer isso?
      E também gostaria de saber como posso limitar as caixas de texto, como podem ver na imagem ela vai até a lateral máxima da página.
      Agradeço desde já pela ajuda.

    • By alisonalves
      Bom dia pessoal. Tenho um blog e ele está bem lento para carregar as páginas. Quando acesso a área administrativa do blog aparece a mensagem "Atualização do PHP necessária". Acessei o meu servidor que no caso é a Locaweb mas notei que lá há várias versões do php e não sei qual é a versão que devo escolher. Além disso preciso fazer mais alguma coisa para modificar a versão do php do meu blog? Obrigado pela força
    • By delgps
      Pessoas tem como eu carregar o wordpress dentro de um iframe.
      Eu preciso colocar dois iframe um para carregar o wordpress e outro para carregar um player de radio online. O iframe é para navegar no site sem interromper o áudio da rádio.
      Tentei colocar dentro de um iframe e carregou a primeira tela porém os outros links estão todos como link não encontrados.
      Tem como rodar o wordpress dentro de um iframe?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.