22 May 2021

How to redirect after checkout in woo-commerce in Wordpress.

Redirect after checkout in woo-commerce in Wordpress. 


Paste in function.php

/*

Redirect loggedin user to order details page

*/

if(is_user_logged_in())

{

add_action( 'template_redirect', 'woocommerce_redirect_after_checkout' );

}

function woocommerce_redirect_after_checkout() {

global $wp;

if ( is_checkout() && ! empty( $wp->query_vars['order-received'] ) ) {

$redirect_url = home_url().'/my-account/view-order/'.$wp->query_vars['order-received'] ;


wp_redirect($redirect_url );


exit;

}

}


How to create custom guest popup for checkout with wordpress menu in wordpress.

Create custom guest popup for checkout with wordpress menu in wordpress.

Paste in function.php

function override_checkout_email_field( $fields ) {
global $wpdb;
  $popup_id = $_COOKIE['popup_id'];
global $wpdb;
$tablename = $wpdb->prefix . "guest_users";
$result = $wpdb->get_results ("SELECT * FROM $tablename WHERE id=$popup_id");
foreach ( $result as $print )   {

}
$survey_email = $print->email;
$survey_phone = $print->phone;
    global $woocommerce;
    //$survey_email = $woocommerce->session->get('survey_email');
    if(!is_null($survey_email)) {
      $fields['billing']['billing_email']['default'] = $survey_email;
    }
     if(!is_null($survey_phone)) {
      $fields['billing']['billing_phone']['default'] = $survey_phone;
    } 
    return $fields;
}

add_filter( 'woocommerce_checkout_fields' , 'override_checkout_email_field' );


// Show the popup to fetch email and phone number and store in the database




function guest_popup(){
$popup_id = $_COOKIE['popup_id'];
if(isset($_POST['guest_popup_bt'])){
$email = $_POST['email'];
$phone = $_POST['phone'];
date_default_timezone_set('Asia/Kolkata');
$date = date('d-m-Y h:i:s a');
global $wpdb;
$table_name = $wpdb->prefix . "guest_users";
$wpdb->insert($table_name, array('email' => $email, 'phone' => $phone, 'created_at' => $date) ); 
$lastid = $wpdb->insert_id;
if(!empty($lastid)){
//setcookie('popup_id', $lastid, strtotime('+1 day'), COOKIEPATH, COOKIE_DOMAIN);
setcookie('popup_id', $lastid, strtotime("+1 year"), COOKIEPATH, COOKIE_DOMAIN);
if ( ! WC()->cart->get_cart_contents_count() == 0 ) { 
wp_redirect(site_url().'/checkout');
}else{
wp_redirect(site_url().'/shop');
}
}
}
?>
<?php
if(!is_user_logged_in() && is_cart() && empty($popup_id)){
?>
<style>
.popup-container {
    width: 100%;
    height: 100vh;
    background-color: #000000bf;
    position: fixed;
    display: flex;
    justify-content: Center;
    align-items: center;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 9999999;
    left: 0;
}

.popup-box input[type="email"],input[type="number"] {
    width: 100%;
    font-size: 15px;
    padding: 7px 7px;
}
input.guest_popup_bt {
    padding: 5px 16px;
    background: #000;
    border: #000;
    color: white;
    font-weight: 400;
    font-size: 16px;
}
.form-filed-box {
    margin-top: 10px;
}
.popup-box h4 {
    margin: 0;
    font-size: 17px;
    text-align: center;
    font-weight: 400;
    letter-spacing: 1px;
    margin-bottom: 12px;
}
.popup-box {
    padding: 59px 37px;
    background: white;
    border-radius: 9px;
    width: 386px;
position:relative;
}

.popup_close_bt {
    background: #000;
    color: White;
    position: absolute;
    right: -15px;
    top: -15px;
    border-radius: 200%;
    width: 30px;
    height: 30px;
    text-align: center;
    display: flex;
    justify-content: center;
    align-items: center;
cursor:pointer;
}
</style>
<script>
jQuery(document).ready(function($){
$('.popup_close_bt').click(function(){
$('.popup-container').css('display','none');
});

if (typeof $.cookie('popup_id') === 'undefined'){

$('.checkout-button').click(function(e){
e.preventDefault;
jQuery('.popup-container').css('display','flex');
return false;
});
}
});
</script>
<div class="popup-container">
<div class="popup-box">
<div class="popup_close_bt">X</div>
<form action="" method="post">
<h4>Please enter the following detail to move forward</h4>
<div class="form-filed-box">
<label>Email</label>
<input type="email" name="email" >
</div>
<div class="form-filed-box">
<label>Phone no.</label>
<input type="text" name="phone" >
</div>
<div class="form-filed-box">
<input type="submit" name="guest_popup_bt" class="guest_popup_bt" value="Submit">
</div>
</form>
</div>
</div>
<?php
}
}
add_action('wp_head','guest_popup');


add_action("admin_menu", "addMenu");

function addMenu() {
    add_menu_page("Guest Info", "Guest Info", "edit_posts",
        "guest-popup", "displayPage", null,10);
}

add_filter("custom_menu_order", "allowMenuStructure");
add_filter("menu_order", "loadMenuStructure");

function displayPage() {
?>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.2.2/css/buttons.dataTables.min.css">



<script src="https://code.jquery.com/jquery-1.12.3.js"></script>
<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.2/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.2/js/buttons.flash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js"></script>
<script src="https://cdn.rawgit.com/bpampuch/pdfmake/0.1.18/build/pdfmake.min.js"></script>
<script src="https://cdn.rawgit.com/bpampuch/pdfmake/0.1.18/build/vfs_fonts.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.2/js/buttons.html5.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.2/js/buttons.print.min.js"></script>  



<script>

$(document).ready(function() {
    $('#example').DataTable( {
      /*   dom: 'Bfrtip',
        buttons: [
            'copy', 'excelFlash', 'excel', 'pdf', 'print',{
            text: 'Reload',
            action: function ( e, dt, node, config ) {
                dt.ajax.reload();
            }
        }
        ] */
    } );
} );

</script>


<table id="example" class="display nowrap" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>S.r</th>
                <th>Date</th>
                <th>Email</th>
                <th>Phone</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>S.r</th>
                <th>Date</th>
                <th>Email</th>
                <th>Phone</th>
            </tr>
        </tfoot>
        <tbody>
<?php
global $wpdb;
$tablename = $wpdb->prefix . "guest_users";
$result = $wpdb->get_results ("SELECT * FROM $tablename order by Id DESC");
//print_r($result);
$i = 1 ;
foreach ( $result as $print )   {
?>
            <tr>
                <td><?php echo $i; ?></td>
                <td><?php echo $print->created_at; ?></td>
                <td><a href="mailto:<?php echo $print->email; ?>"><?php echo $print->email; ?></a></td>
                <td><a href="tel:<?php echo $print->phone; ?>"><?php echo $print->phone; ?></a></td>

            </tr>
<?php
$i++;
}
?>
        </tbody>
    </table>
<?php
}

12 May 2021

PHP file upload - Dynamically Add Remove input fields using JQuery and PHP.

PHP file upload - Dynamically Add Remove input fields using JQuery and PHP.




Paste in View


<style>
.file {
  visibility: hidden;
  position: absolute;
}

.btn.btn-primary {
  background-color: #007bff;
  border-color: #007bff;
  outline: none;
  color: #fff;
}

.multi-cus-filed{
  position:relative;
}

.remove-cus-filed {
background: #007bff;
border-radius: 200%;
padding: 4px 13px;
border: none;
color: white;
font-size: 19px;
position: absolute;
top: 32px;
right: -40px;
}


.multi-cus-filed{
  position:relative;
}

.remove-cus-filed {
background: #007bff;
border-radius: 200%;
padding: 4px 13px;
border: none;
color: white;
font-size: 19px;
position: absolute;
top: 32px;
right: -40px;
}
</style>
  
  
  
<form role="form" action="" method="POST" enctype="multipart/form-data">
<div class="multi-field-wrapper">
  <div class="multi-fields">
<div class="multi-field multi-cus-filed">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="ReportName">Name</label>
<div>
  <input type="text" class="form-control "  name="title[]" placeholder="Enter Report name" >
</div>
</div>
</div>
<div class="col-sm-6">
  <div class="form-group">
<label for="ReportFile">File</label>
<input type="file" name="report[]" class="file">
<div class="input-group mb-3">
  <div class="input-group-prepend">
<span class="input-group-text" id="basic-addon1"><i class="fas fa-paperclip"></i></span>
  </div>
  <input type="text" class="form-control" disabled placeholder="Upload File" aria-label="Upload File" aria-describedby="basic-addon1">
  <div class="input-group-append">
<label class="browse input-group-text btn btn-primary" id="basic-addon2"><i class="fas fa-search"></i>  Choose</label>
  </div>
</div>
  </div>
</div>
</div>
  <button type="button" class="remove-field remove-cus-filed">X</button>
</div>
  </div>
<button type="button" class="add-field btn btn-primary">Add field</button>
<button type="submit" name="uploadreport" value="uploadreport" class="btn  btn-outline-primary">Submit</button>
  </div>
  
</form>


<script>

$('.multi-field-wrapper').each(function() {
    var $wrapper = $('.multi-fields', this);
    $(".add-field", $(this)).click(function(e) {
        $('.multi-field:first-child', $wrapper).clone(true).appendTo($wrapper).find('input').val('').focus();
    });
    $('.multi-field .remove-field', $wrapper).click(function() {
        if ($('.multi-field', $wrapper).length > 1)
            $(this).parent('.multi-field').remove();
    });
});


$(document).on("click", ".browse", function() {
  var file = $(this)
    .parent()
    .parent()
    .parent()
    .find(".file");
  file.trigger("click");
});
$(document).on("change", ".file", function() {
  $(this)
    .parent()
    .find(".form-control")
    .val(
      $(this)
        .val()
        .replace(/C:\\fakepath\\/i, "")
    );
});



</script>
<script>
$(function () {
  bsCustomFileInput.init();
});
</script>


Paste in Controller


<?php


$user_id = $this->session->userdata('user_id');
$doc_patients = $this->User_Model->get_single_appointments($appointment_id);
$Patient_id = $doc_patients[0]->uid;
//$json_arr = json_decode($Patient_his_titles, true);
//print_r($json_arr);
// die();
if($this->input->post('uploadreport')=='uploadreport' || $this->input->post('uploadprescription')=='uploadprescription' ){

$report_type = 'testreport';
$title = $this->input->post('title');
$files = $_FILES['report']['name'];
$total_reports = count($files);
  $file = array();
  $upload_name = array();
  $report_title = array();
for($i=0; $i<$total_reports; $i++){
//echo $i.'jassi <br>';
$report_name = $title[$i];
$file_name = $_FILES['report']['name'][$i];
if(!empty($file_name) || !empty($report_name)){
$_FILES['file']['name'] = $_FILES['report']['name'][$i];
$_FILES['file']['type'] = $_FILES['report']['type'][$i];
$_FILES['file']['tmp_name'] = $_FILES['report']['tmp_name'][$i];
$_FILES['file']['error'] = $_FILES['report']['error'][$i];
$_FILES['file']['size'] = $_FILES['report']['size'][$i];
  
$config['upload_path']          = 'assets/new-template/patient-reports';
//$config['allowed_types']        = '*';
$config['allowed_types']        = 'docx|doc|DOC|DOCX|rtf|pdf|gif|jpg|png|jpeg';
//$config['max_width']            = 128;
//$config['max_height']           = 128;
$config['encrypt_name']         = TRUE;
$this->load->library('upload', $config);


if ( ! $this->upload->do_upload('file'))
{
$error = $this->upload->display_errors();

else

$data = array('upload_data' => $this->upload->data());
$upload_name[] = $this->upload->data('file_name');
$report_title[] = $report_name;
}  

}
}
 
$title = $report_title;
$files = $upload_name;
if($total_reports==$i){
 
$patient_history = $this->User_Model->patient_reports($appointment_id,$user_id,$report_type);

if(count($patient_history)>0){
$Patient_his_id = $patient_history[0]->id;
$Patient_his_titles = $patient_history[0]->title;
$Patient_his_reports = $patient_history[0]->doc;
$oldtitle = json_decode($Patient_his_titles,true);
$oldreport = json_decode($Patient_his_reports,true);
$titleresult = array_merge($title, $oldtitle);
$filesresult = array_merge($files, $oldreport);
$newtitle = json_encode($titleresult);
$newreport = json_encode($filesresult);

$data = array(
'title' => $newtitle,
'doc' => $newreport
);

$update = $this->User_Model->update_patient_report($data,$Patient_his_id);
}
else{
$titles = json_encode($title);
$reports = json_encode($files);
$data = array(
'appointment_id' => $appointment_id,
'doc_id' => $user_id,
'Patient_id' => $Patient_id,
'title' => $titles,
'doc' => $reports,
'type' => $report_type,
'status' => 1
);
$update = $this->User_Model->insert_patient_report($data);
}
if($this->db->affected_rows()){
$this->session->set_flashdata('success', 'The report has been updated successfully.');
header('Location: ' . $_SERVER['HTTP_REFERER']);
}
//die();
}
?>


In Model

Create function according to you.

How to add re-captcha v3 on all Elementor forms using coding?

 Add re-captcha v3 on all Elementor forms using coding add_action('wp_footer',function(){     ?> <script src="https://www...