Arquivado
Este tópico foi arquivado e está fechado para novas respostas.
Recommended Posts
-
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> 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> 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> 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 LucasLV
Olá.
Tenho um site onde as imagens são geradas através de um arquivo PHP - utilizo esse método para retornar imagens webp ou jpg - e vi que o navegador não utiliza, ou não salva em cache, as imagens geradas dessa forma.
Já as onde informo o caminho completo da imagem com a extensão, aparecem como utilizadas do cache.
Esse comportamento é normal quando as imagens são geradas desse jeito ou é por não ter feito nenhuma configuração de cache no arquivo PHP que gera as imagens?
Coloquei uma imagem do resultado exibido no navegador.
-
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
-
Por Wallcrawler
Olá pessoal tudo bem? Estou tentando fazer a cópia de uma imagem que está disponível na web e salvar em uma pasta no meu projeto. Essa imagem está sob protocolo SSL mas navegador consegue acessá-la normalmente. Mas o meu script php é bloqueado, e não entendo o porquê.
Segue o código que estou usando:
<?php //error_reporting(E_ALL ^ E_DEPRECATED); //ini_set('display_errors', 1); //die('Script travado!'); $start = microtime(true); set_time_limit(0); function save_image($inPath,$outPath) { //Download images from remote server $in = fopen($inPath, 'rb'); $out = fopen($outPath, 'wb'); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); } include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/classes/Rpi.class.php'); include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/functions.class.php'); $func = new FuncoesAuxiliares(); $rpi = new Rpi(); if(!isset($_GET['num_processo'])) { $rows = $rpi->Consulta('select num_processo, classe, especificacao from processos order by num_processo ASC limit 1'); } else { $rows = $rpi->Consulta("select num_processo, classe, especificacao from processos where num_processo > '" . $_GET['num_processo'] . "' order by num_processo ASC limit 1"); } $registros = 0; $arrayInsert = array(); $qtd_caracteres_total = 14; foreach ($rows as $rs) { //$rs['num_processo'] $zeros = ''; $qtd_char_processo = strlen($rs['num_processo']); //Fill zeros for($i=0; $i < ($qtd_caracteres_total - $qtd_char_processo); $i++) { $zeros .= '0'; } echo('BR5' . $zeros . $rs['num_processo'] . '<br>'); $url = 'http://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo']; //Aqui tento acessar a imagem e salvar na pasta correspondente save_image($url, __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); //copy('https://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo'], __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); $processo = $rs['num_processo']; $registros++; } $registros = number_format($registros, 0, ',', '.'); // Display Script End time $time_end = microtime(true); //dividing with 60 will give the execution time in minutes other wise seconds $execution_time = ($time_end - $start)/60; //execution time of the script echo '<b>Total Execution Time:</b> '. $execution_time .' Mins <hr><br><br>Registros: ' . $registros . '<br><br>'; echo("<a href='down_logo.php?num_processo=" . $processo ."' target='_self'>Próxima página</a><br><br>"); ?> O erro retornado é o seguinte:
Warning: fopen(): SSL: Connection reset by peer in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10
Warning: fopen(http://www.tmdn.org/tmview/trademark/image/BR500000825642590): failed to open stream: HTTP request failed! in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10
Warning: fread() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 12
Warning: fclose() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 16
Só que se você tentar acessar o endereço no browser, diretamente, a imagem aparece:
https://www.tmdn.org/tmview/trademark/image/BR500000825642590
Onde posso estar errando? Obrigado pela atenção de todos.
-