Ir para conteúdo

Arquivado

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

adrianleite

Obter lista de produtos do woocommerce

Recommended Posts

Olá Srs.(a)
Estou precisando de uma ajuda.
Estou desenvolvendo um plugin para WP-Woocommerce que deve alterar as propriedades de alguns produtos.

Basicamente é: (Obs. Os produtos já estão cadastrados)
Listar todos os produtos com uma determinada referencia e alterar seus status como "fora de estoque" ou vice-versa.

Eu estou travado ainda na parte de listar os produtos... Dei uma olhada em alguns códigos que encontrei mas não consegui entende-los.

O código abaixo foi o único que consegui alguma coisa, mas o mesmo eu tenho que informar o "ID" manualmente.

$todos_produtos = new WC_Product_Factory();
$produto = $todos_produtos->get_product(337);
echo '>> '.$produto->get_price();

Alguém pode me ajudar nesses problemas?

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui listar os produtos, Segue exemplo:

$args = array(
   'posts_per_page' => -1, // -1 Mostrar todos
   'post_type' => 'product'
);
$query = new WP_Query($args);
// Checar resultado
if ( $query->have_posts() ) {
   while ( $query->have_posts() ) {
      $query->the_post();
      $produto = wc_get_product(get_the_id());
      // Metodos da WC_Product
      echo $produto->get_title().'<br>';
   }
}
// Restore original post data.
wp_reset_postdata();

Agora preciso alterar o preço definitivo.
Pelo método set_price() ele altera somente no momento.
Alguém sabe como posso realizar a alteração do preço definitivamente??

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Robson Teixeira
      Me ajude o plugin esta tudo certo só nao esta aparecendo o numero da residência e o numero do telefone quando finaliza a compra, tem um botão ao finalizar a compra que manda a ordem de checkout pelo whatsapp  .. Preciso que apareça esses campos ..
       
       
      <?php
      // Make sure we don't expose any info if called directly
      if ( ! defined( 'ABSPATH' ) ) {
          exit; // Exit if accessed directly
      }
      /**
       * Plugin Name: WFCM Whatsapp Checkout
       * Description: Whatsapp checkout plugin for WFCM.
       * Version: 1.1
       * Author: aditbaco, Plonknimbuzz
       * Author URI: https://github.com/aditbaco/WA-Checkout-WCFM-Woocommerce
       * Requires at least Woocommerce : 4.1
       * Requires at least WCFM Front End Manager : 6.4
       * Requires at least WCFM Marketplace Multi Vendor : 3.4
       * Tested up to Wordpress : 5.5
       * License: GPLv2 or later
       * License URI: https://www.gnu.org/licenses/gpl-2.0.html
       */
       // Check if WooCommerce is active
       function WCFMWC_check_woocommece_active(){
          if ( ! is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
              echo "<div class='error'><p><strong>WCFM Whatsapp Checkout</strong> requires <strong>WooCommerce plugin.</strong>&nbsp; Please <a href='https://wordpress.org/plugins/woocommerce' target=_blank>install</a> and activate it.</p></div>";
              }
          }
          add_action('admin_notices', 'WCFMWC_check_woocommece_active');
      // Check if WCFM is active
       function WCFMWC_check_wcmv_active(){
          if ( ! is_plugin_active( 'wc-multivendor-marketplace/wc-multivendor-marketplace.php' ) ) {
              echo "<div class='error'><p><strong>WCFM Whatsapp Checkout</strong> requires <strong>WC Multivendor Marketplace plugin.</strong>&nbsp; Please <a href='https://wordpress.org/plugins/wc-multivendor-marketplace' target=_blank>install</a> and activate it.</p></div>";
              }
          }
          add_action('admin_notices', 'WCFMWC_check_wcmv_active');
      // Check if WCFM is active
       function WCFMWC_check_wcfm_active(){
          if ( ! is_plugin_active( 'wc-frontend-manager/wc_frontend_manager.php' ) ) {
              echo "<div class='error'><p><strong>WCFM Whatsapp Checkout</strong> requires <strong>WC Multivendor Marketplace - Frontend Manager plugin.</strong>&nbsp; Please <a href='https://wordpress.org/plugins/wc-frontend-manager' target=_blank>install</a> and activate it.</p></div>";
              }
          }
          add_action('admin_notices', 'WCFMWC_check_wcfm_active');
      //register Whatsapp number to vendors store setting
      add_filter( 'wcfm_marketplace_settings_fields_general', 'vendor_store_custom_fields' );
      function vendor_store_custom_fields($settings_fields_general) {
          global $WCFM, $WCFMmp, $wp;
          if(isset($settings_fields_general['banner'])){
              return $settings_fields_general; //fix bug on admin store manage page
          }
          if( current_user_can('manage_woocommerce') ) {
              $van_cur_url = add_query_arg( array(), $wp->request );
              $van_vendorid = substr( $van_cur_url, strrpos( $van_cur_url, '/' ) + 1 );
              $user_id = intval( $van_vendorid );
          }
          else {
              $user_id = apply_filters( 'wcfm_current_vendor_id', get_current_user_id() );
          }
          //Register Whatsapp Number button and option in vendor's profile
          $store_whatsapp_opt = array( 'yes' => __( 'Yes', 'wc-frontend-manager' ), 'no' => __( 'No', 'wc-frontend-manager' ) );
          $vendor_data = get_user_meta( $user_id, 'wcfmmp_profile_settings', true );
          $store_whatsapp_show = isset( $vendor_data['store_whatsapp_show'] ) ? $vendor_data['store_whatsapp_show'] : 'no';
          $store_whatsapp = isset( $vendor_data['store_whatsapp_number'] ) ? $vendor_data['store_whatsapp_number'] : null;
          $settings_fields_general["store_whatsapp_number"] = array('label' => __('Whatsapp Number', 'wc-frontend-manager') , 'type' => 'text',  'class' => 'wcfm-text wcfm_ele ', 'label_class' => 'wcfm_title', 'value' => $store_whatsapp );
          $settings_fields_general["store_whatsapp_show"] = array('label' => __('Show Whatsapp button on Checkout', 'wc-frontend-manager') , 'type' => 'select', 'options' => $store_whatsapp_opt, 'class' => 'wcfm-select wcfm_ele', 'label_class' => 'wcfm_title', 'value' => $store_whatsapp_show );
          return $settings_fields_general;
      }
      //Register Show whatsapp number on vendor's page
      add_action( 'after_wcfmmp_sold_by_info_product_page', 'cus_after_wcfmmp_sold_by_info_product_page' );
      function cus_after_wcfmmp_sold_by_info_product_page( $vendor_id ) {
          $vendor_data = get_user_meta( $vendor_id, 'wcfmmp_profile_settings', true );
          $whatsapp = isset($vendor_data['store_whatsapp_number'])?$vendor_data['store_whatsapp_number']:null;
          if( isset($vendor_data['store_whatsapp_show']) && $vendor_data['store_whatsapp_show'] == 'yes' && !empty($whatsapp)) {
              echo '<div class="wcfmmp_store_tab_info wcfmmp_store_info_address"><i class="wcfmfa fa-phone" aria-hidden="true"></i><span>' . $whatsapp . '</div>';
          }
      }
      //Register different WA number checkout based on WA number on vendor stores setting
      add_action( 'woocommerce_before_thankyou', 'wfcm_add_assets_wa_checkout' );
      add_filter( 'woocommerce_thankyou_order_received_text', 'wfcm_wa_thankyou', 10, 2 );
      function wfcm_wa_thankyou($title, $order) {
          $data =[];
          $shipping_data =[];
          $judul = 'Obrigado pelo seu pedido.';
          $subtitle = 'Conclua sua compra clicando no botão abaixo para que o pedido possa ser confirmado pelo Vendedor.';
          
          $mode = ($order->get_billing_address_1() != $order->get_shipping_address_1() || $order->get_billing_first_name() != $order->get_shipping_first_name())?'shipping':'billing';
          //$mode = 'shipping'; //force shipping mode
          $country =  WC()->countries->countries[ $order->{"get_".$mode."_country"}() ];
          $states = WC()->countries->get_states( $order->{"get_".$mode."_country"}() );
          $province =  $states[ $order->{"get_".$mode."_state"}() ];
          $shipping_method_title = $order->get_shipping_method();
          foreach( $order->get_items( 'shipping' ) as $item_id => $shipping_item_obj ){
              $found=false;
              foreach($shipping_item_obj->get_meta_data() as $i=>$val){
                  $d = $val->get_data();
                  if($d['key']=='vendor_id'){
                      $shipping_data[$d['value']] = [
                          'title'=>$shipping_item_obj->get_method_title(),
                          'total'=>$shipping_item_obj->get_total(),
                      ];
                      $found = true;
                      break;
                  }
                  if(!$found){
                      $shipping_data[0] = [
                          'title'=>$shipping_item_obj->get_method_title(),
                          'total'=>$shipping_item_obj->get_total(),
                      ];
                  }
              }
          }
          foreach($order->get_items() as $item){
              $vendor_id = $item->get_meta('_vendor_id');
              if(!isset($data[$vendor_id])){
                  $vendor_data = get_user_meta( $vendor_id, 'wcfmmp_profile_settings', true );
                  $whatsapp_show = isset( $vendor_data['store_whatsapp_show'] ) ? $vendor_data['store_whatsapp_show'] : 'no';
                  $whatsapp = isset( $vendor_data['store_whatsapp_number'] ) ? $vendor_data['store_whatsapp_number'] : null;
                  $vendor_name =  get_user_meta( $vendor_id, 'store_name', true );
                  if($whatsapp_show!='yes' || empty($whatsapp) ){
                      continue;
                  }
                  $items = $item->get_quantity()."x - *".$item->get_name()."*%0A";
                  $items .= "URL: ".get_permalink( $item->get_product_id() ) ."%0A";
                  $data[$vendor_id]=[
                      'whatsapp'=>$whatsapp,
                      'vendor_name'=>$vendor_name,
                      'items'=>$items,
                      'total'=>$item->get_total(),
                  ];
              }else{
                  $items = $item->get_quantity()."x - *".$item->get_name()."*%0A";
                  $items .= "Tautan: ".get_permalink( $item->get_product_id() ) ."%0A";
                  $data[$vendor_id]['items'] .= $items;
                  $data[$vendor_id]['total'] += $item->get_total();
              }
          }
          
          if(empty($data)){
              return $title;
          }
          //Loop each checkout vendors whatsapp button
          $html ='';
          foreach($data as $vendor_id=>$d){
              $msg = "*Olá, aqui estão os detalhes do meu pedido:*%0A%0A";
              $msg .= $d['items']."%0A";
              $msg .="*Nº do pedido: ".$order->get_id()."%0A";
              $msg .="*Valor total*: ".strip_tags(wc_price($d['total']))."%0A";
              $msg .="*Forma de pagamento*: ".$order->get_payment_method_title()."%0A";
              if(isset($shipping_data[$vendor_id])){
                  $msg .="*Forma de entrega*: ".$shipping_data[$vendor_id]['title']." ".strip_tags(wc_price($shipping_data[$vendor_id]['total']))."%0A%0A";
              }elseif(isset($shipping_data[0])){
                  $msg .="*Forma de entrega*: ".$shipping_data[0]['title']." ". strip_tags(wc_price($shipping_data[0]['total']))."%0A%0A";
              }
              
              $msg .="*Informações do Comprador*: %0A";
              $msg .="Nome: ".$order->{"get_".$mode."_first_name"}()." ".$order->{"get_".$mode."_last_name"}()."%0A";
              $msg .="Endereço: ".implode(', ',[$order->{"get_".$mode."_address_1"}(),$order->{"get_".$mode."_address_2"}()])."%0A";
              $msg .="Cidade: ".$order->{"get_".$mode."_city"}().", ".$province.", ".$country."%0A";
              $msg .="CEP: ".$order->{"get_".$mode."_postcode"}()."%0A";
              if($mode=='shipping'){
                  $email = (isset($order->shipping['email']))?$order->shipping['email']:$order->get_billing_email();
                  $phone = (isset($order->shipping['phone']))?$order->shipping['phone']:$order->get_billing_phone();
              }else{
                  $email = $order->get_billing_email();
                  $phone = $order->get_billing_phone();
              }
              $msg .="E-mail: ".$email."%0A";
              $msg .="Telefone: ".$phone."%0A";
              $msg .= "Observações: ".$order->get_customer_note()."%0A";
              $msg .="%0A";
              $msg .="Muito Obrigado!%0A%0A";
              $msg .= "Data da Mensagem: ".get_post_time( 'j-F-Y - H:i', false, $order->get_id(), true );
              $btn_text ='Enviar compra para: '.$d['vendor_name'];
              $html .=  '<a id="sendbtn" href="https://api.whatsapp.com/send?phone='.$d['whatsapp'].'&text='. ($msg).'" target="_blank" class="wa-order-thankyou">'.$btn_text.'</a><br>';
          }
          return '<div class="thankyoucustom_wrapper">
                      <h1 class="thankyoutitle">'.$judul.'</h1>
                      <p class="subtitle">'.$subtitle.'</p>'.
                      $html.
                  '</div>';
      }
      function wfcm_add_assets_wa_checkout(){
          wp_register_style( 'wa_checkout_style',  plugin_dir_url( __FILE__ ) . 'style.css' );
          wp_enqueue_style( 'wa_checkout_style' );
      }
       
    • Por luigiferrari
      Gostaria de fazer um programa onde o usuário digitaria o tamanho de conjuntos e quantas linhas possui os conjuntos, exemplo:

      Seguindo, o programa perguntaria qual conjunto o usuário quer adicionar o valor, e então o valor seria adicionado nas linhas, e qnd cheio, seria o FIFO.
      Mas minhas principais duvidas seriam:
      1- Como eu crio um vetor dentro de outro (não necessariamente precisa ser um vetor, aceito sugestões de como fazer isso)
      2- Caso eu faça com o vetor, teria que gerar x vetores, por exemplo, caso o usuário colocasse em "qts conjuntos: 5" teria que criar 5 conjuntos(vetores) diferentes. Como faço isso?!
      Lembrando aceito qualquer sugestão, estou fazendo em C# mas tbm entendo de Python e PHP caso tenha alguma ideia.
    • Por dutopfave
      Boa Noite Galera, estou com dúvida em como cria um cadastra de VARIAÇÕES DE PRODUTOS.

      Ex.: Tenho um produto que é um TENIS, ai nele vou criar as VARIAÇÕES, então vou usa COR e TAMANHO.
      COR: preto, verde, azul
      TAMANHO: 39, 40, 41

      até ai blz, porém a duvida é como fazer o cadastrado de combinações de cor e tênis, tipo no banco de dados teria q fica exatamente assim....

      ID | COR | TAMANHO
      ... | preto | 39
      ... | preto | 40
      ... | preto | 41
      ... | verde | 39
      ... | verde | 40
      ... | verde | 41
      ... | azul | 39
      ... | azul | 40
      ... | azul | 41

      alguém tem alguma solução
    • Por joaoluizbt
      Eu tenho um campo com vários itens separados por vírgula,

      Qtd
      UM
      Descrição
                     1,2                                 
                 caneta,papel          
      mas preciso que eles sejam exibidos no formulário um embaixo do outro.

      Qtd
      UM
      Descrição
           1 2                                 
      caneta
      papel          
      Existe alguma forma de fazer isso só com html?
       
      o meu código apenas aponta para o campo e a informação já vem assim separada com vírgula. Como alterar?
       
      <td style="width: 10.58%; padding: .75pt .75pt .75pt .75pt;" width="10%">
      <p class="MsoNormal">            {{db.field123}}           </p>
      </td>
       
    • Por rafa-martin
      Pessoal, bom dia. 
       
      Estou com um problema e não sei mais como posso tentar resolver. Tenho um site em woocommerce e a pessoa recebe um link no email como https://www.site.com.br/?id=codigo.  Na página principal do site eu pego essa variável e jogo dentro de uma sessão, por exemplo: $_SESSION['id'] = $_GET['id']. Até aqui sem problemas. Na página de checkout não consigo resgatar essa varivável, me informa o erro Notice: undefined index id, dizendo que minha variável não existe. É como se na página do ckeckout destruísse minha variável. Já tentei variável global, define() e nada.
       
      Alguém sabe como poderia resolver isso?
       
      Obrigado
×

Informação importante

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