Commit b40ec477 by Pham Huy

add plugin woo table

parent 5e16320d
<?php
/**
* This file is Activated now
* Will ad in Future.
* Just keeping information, I have kept this file
*
* @since 1.0.0
* @updated 1.0.4 Currently Inactive this file.
*/
/**
* Function for Live Table Update for Configure page
*
* @since 1.0.0
* @deprecated since 1.0.4 1.0.4_12_5.5.2018
*/
function wpt_live_table_setting(){
if( isset( $_POST['action'] ) == 'wpt_table_preview' ){
$atts = $_POST['info'];
echo wpt_shortcode_generator( $atts );
}else{
echo '<p style="color: #d00;">' . esc_html( 'Critical Error', 'wpt_pro' ) . '</p>';
}
die();
}
<?php
/**
* Faq and contact us page
*
* @since 4.25
*/
function wpt_fac_support_page(){
?>
<div class="wrap wpt_wrap wpt_configure_page">
<h2 class="plugin_name"><?php esc_html_e( 'Contact & Support', 'wpt_pro' );?></h2>
<div id="wpt_configuration_form" class="wpt_leftside">
<div style="text-align:center;" class="fieldwrap wpt_result_footer">
<img style="margin: 13px auto;max-width: 100%;" src="<?php echo WPT_BASE_URL; ?>images/cover_image.jpg">
<hr>
<div class="wpt_faq_support_link_collection">
<a href="https://codecanyon.net/user/codeastrology/portfolio" target="_blank"><?php esc_html_e( 'CodeAstrology Portfolios', 'wpt_pro' );?></a>
<a href="https://codecanyon.net/user/codeastrology" target="_blank"><?php esc_html_e( 'CodeAstrology Profile', 'wpt_pro' );?></a>
<a href="https://codeastrology.com/support/" target="_blank"><?php esc_html_e( 'CodeAstrology Support', 'wpt_pro' );?></a>
<a href="https://codeastrology.com" target="_blank"><?php esc_html_e( 'CodeAstrology.com', 'wpt_pro' );?></a>
</div>
<a href="mailto:codersaiful@gmail.com"><?php esc_html_e( 'We are Freelancer', 'wpt_pro' );?></a>
<br style="clear: both;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/ZloiY3NRmW8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></iframe>
<div>
<h3><?php esc_html_e( 'More Video Tutorial', 'wpt_pro' );?></h3>
<a href="https://youtu.be/Jl3gTcOOhRQ"><?php esc_html_e( 'Custom Design Of Woo Product Table Pro', 'wpt_pro' );?></a><br>
<a href="https://youtu.be/aOzzYBr2Rug"><?php esc_html_e( 'Custom Field Support In WooCommerce Product Table', 'wpt_pro' );?></a><br>
<a href="https://youtu.be/w2vZSIzAJFo"><?php esc_html_e( 'Custom Taxnomoy Support In WooCommerce Product Table Pro', 'wpt_pro' );?></a><br>
<a href="https://youtu.be/D_hl2UtVTCw"><?php esc_html_e( 'How to use Woo Product Table Pro - Basic to Advance', 'wpt_pro' );?></a><br><br>
</div>
<br style="clear: both;">
</div>
<!-- </form> -->
<br style="clear: both;">
</div>
<!-- Right Side start here -->
<?php include __DIR__ . '/includes/right_side.php'; ?>
</div>
<style>
.wpt_leftside,.wpt_rightside{float: left;min-height: 500px;}
.wpt_leftside{
width: 65%;
}
.wpt_rightside{width: 32%; margin-top: -42px;}
.wpt_faq_support_link_collection a {
text-decoration: none;
background: #2a3950;
padding: 3px 6px;
cursor: pointer;
display: inline-block;
color: #a3d5e0;
border-radius: 5px;
transition: all 1s;
margin: 1px;
}
.wpt_faq_support_link_collection a:hover {
background: #a3d5e0;
padding: 3px 8px;
color: #2a3950;
border-radius: 8px;
}
@media only screen and (max-width: 800px){
.wpt_leftside.wpt_rightside{float: none !important;width: 100%;}
}
</style>
<?php
}
\ No newline at end of file
<div class="wpt_rightside">
<div class="wpt_right_side_in_wrapper" style="padding: 10px;">
<div class="social_title_wrapper">
<h2 class="social_title"><img src="<?php echo WOO_Product_Table::getPath( 'BASE_URL' ); ?>images/social/social.png"> Share on Social Network</h2>
<p>Your one share can be best GIFT for me.</p>
<div class="social_links">
<?php
$url_for_share = urlencode('https://codecanyon.net/item/woo-product-table-pro/20676867' );
?>
<a href="http://www.facebook.com/sharer.php?u=<?php echo esc_attr( $url_for_share ); ?>" title="Your Share, My best Gift" target="_blank">
<img src="<?php echo WOO_Product_Table::getPath( 'BASE_URL' ); ?>images/social/facebook.png">
</a>
<a href="http://twitter.com/share?text=<?php echo urlencode("Best #Quick_Order Plugin for #WooCommerce #Product #Table Pro - #WPTpro | #" . rand(88,2934)); ?>&url=<?php echo esc_attr( $url_for_share ); ?>&via=CodeAstrology" title="Your Share, My best Gift" target="_blank">
<img src="<?php echo WOO_Product_Table::getPath( 'BASE_URL' ); ?>images/social/twitter.png">
</a>
<a href="https://plus.google.com/share?url=<?php echo esc_attr( $url_for_share ); ?>&t=<?php echo urlencode("Best Quick Order Plugin for WooCommerce Product Table Pro"); ?>" title="Your Share, My best Gift" target="_blank">
<img src="<?php echo WOO_Product_Table::getPath( 'BASE_URL' ); ?>images/social/google.png">
</a>
<a href="http://www.linkedin.com/shareArticle?mini=true&url=<?php echo esc_attr( $url_for_share ); ?>&title=<?php echo urlencode("Best Quick Order Plugin for WooCommerce Product Table Pro"); ?>" title="Your Share, My best Gift" target="_blank">
<img src="<?php echo WOO_Product_Table::getPath( 'BASE_URL' ); ?>images/social/linkedin.png">
</a>
<a href="http://www.reddit.com/submit?url=<?php echo esc_attr( $url_for_share ); ?>&title=<?php echo urlencode("Best Quick Order Plugin for WooCommerce Product Table Pro"); ?>" title="Your Share, My best Gift" target="_blank">
<img src="<?php echo WOO_Product_Table::getPath( 'BASE_URL' ); ?>images/social/reddit.png">
</a>
<a href="https://mail.google.com/mail/u/0/?view=cm&fs=1&su=<?php echo urlencode("Best Quick Order Plugin for WooCommerce Product Table Pro"); ?>&body=<?php echo esc_attr( $url_for_share ); ?>&ui=2&tf=1" title="Your Share, My best Gift" target="_blank">
<img src="<?php echo WOO_Product_Table::getPath( 'BASE_URL' ); ?>images/social/gmail.png">
</a>
</div>
<small>Feel free to knock me Any time.</small>
</div>
</div>
<div class="wpt_right_side_in_wrapper" style="padding: 10px;">
<div class="need_help_wrapper">
<h1>Need Help?</h1>
<a style="display: block;text-align: left;" target="_blank" href="https://codeastrology.com/support/">
<img style="max-width: 100px" src="<?php echo WPT_BASE_URL; ?>images/customer_support.png">
<h3>Customer Support</h3>
</a>
<span>Email: <a href="https://mail.google.com/mail/u/0/?view=cm&fs=1&su=<?php echo urlencode("Need help for " . site_url()); ?>&body=<?php echo urlencode("Hey Saiful, I need help.\nNow I will explain my Issue.\n...________\n"); ?>&ui=2&tf=1&to=<?php echo urlencode("Saiful Islam<codersaiful@gmail.com>"); ?>" target="_top">Gmail Me <b>(codersaiful@gmail.com)</b></a></span>
<span>FB Group: <a target="_blank" href="https://www.facebook.com/groups/CodeAstrology/">Join to CodeAstrology Group</a></span>
<span>Skype: <a href="#">codersaiful</a></span>
<span>Facebook: <a target="_blank" href="https://www.facebook.com/messages/t/codersaiful" target="_blank">Message to CodeAstorlogy</a></span>
<span>Facebook: <a target="_blank" href="https://www.facebook.com/CodeAstrology" target="_blank">CodeAstrology Page</a></span>
<hr/>
<span>Facebook: <a target="_blank" href="https://www.facebook.com/messages/t/codersaiful" target="_blank">Message to Author</a></span>
<span>Facebook: <a target="_blank" href="https://www.facebook.com/codersaiful" target="_blank">Author Profile</a></span>
<span>Youtube: <a href="https://www.youtube.com/playlist?list=PL__UrUIHRxdzupiUk2KKJloistwDMP28t" target="_blank">Youtube Playlist - Video Tutorial</a></span>
</div>
</div>
<div class="wpt_right_side_in_wrapper" style="padding: 10px;">
<div class="rate_us_wrapper">
<a href="https://codecanyon.net/downloads" target="_blank"><img class="rate_us_image" src="<?php echo WOO_Product_Table::getPath( 'BASE_URL' ); ?>images/rate_us.png"></a>
<h1>It can take only 2 Minutes.</h1>
</div>
</div>
</div>
\ No newline at end of file
<?php
add_filter('plugin_action_links_' . WOO_Product_Table::getPath('PLUGIN_BASE_FILE'), 'wpt_add_action_links');
/**
* For showing configure or add new link on plugin page
* It was actually an individual file, now combine at 4.1.1
* @param type $links
* @return type
*/
function wpt_add_action_links($links) {
$wpt_links[] = '<a href="' . admin_url( 'post-new.php?post_type=wpt_product_table' ) . '" title="' . esc_attr__( 'Add new Shortcode', 'wpt_pro' ) . '">' . esc_html__( 'Create Table', 'wpt_pro' ).'</a>';
$wpt_links[] = '<a href="' . admin_url( 'edit.php?post_type=wpt_product_table&page=woo-product-table-config' ) . '" title="' . esc_attr__( 'Configure for Universal', 'wpt_pro' ) . '">' . esc_html__( 'Configure', 'wpt_pro' ) . '</a>';
$wpt_links[] = '<a href="https://codeastrology.com/support/" title="' . esc_attr__( 'CodeAstrology Support', 'wpt_pro' ) . '" target="_blank">'.esc_html__( 'Support','wpt_pro' ).'</a>';
return array_merge( $wpt_links, $links );
}
/**
* Set Menu for WPT (Woo Product Table) Plugin
* It was actually an individual file, now combine at 4.1.1
*
* @since 1.0
*
* @package Woo Product Table
*/
function wpt_admin_menu() {
add_submenu_page( 'edit.php?post_type=wpt_product_table', esc_html__( 'Configuration WPTpro', 'wpt_pro' ), esc_html__( 'Configure', 'wpt_pro' ), 'edit_theme_options', 'woo-product-table-config', 'wpt_configuration_page' );
add_submenu_page( 'edit.php?post_type=wpt_product_table', esc_html__( 'FAQ & Support page - Contact With US', 'wpt_pro' ), sprintf( esc_html__( 'FAQ %s& Contact%s', 'wpt_pro' ), '<span style="color:#ff8921;">', '</span>'), 'edit_theme_options', 'wpt_fac_contact_page', 'wpt_fac_support_page' );
}
add_action( 'admin_menu', 'wpt_admin_menu' );
\ No newline at end of file
<?php
/**
* All metabox will control from here
* This page added at 4.1.1 date: 19.1.2019
*
* @since 4.1.1
* @author Saiful Islam<codersaiful@gmail.com>
*/
/**
* Our total metabox or register_meta_box_cb will controll from here.
*
* @since 4.1.1
*/
function wpt_shortcode_metabox(){
add_meta_box( 'wpt_shortcode_metabox_id', 'Shortcode', 'wpt_shortcode_metabox_render', 'wpt_product_table', 'normal' );
add_meta_box( 'wpt_shortcode_configuration_metabox_id', 'Table Configuration', 'wpt_shortcode_configuration_metabox_render', 'wpt_product_table', 'normal' ); //Added at 4.1.4
}
function wpt_shortcode_metabox_render(){
global $post;
$curent_post_id = $post->ID;
$post_title = preg_replace( '/[#$%^&*()+=\-\[\]\';,.\/{}|":<>?~\\\\]/',"$1", $post->post_title );
echo '<input type="text" value="[Product_Table id=\'' . $curent_post_id . '\' name=\'' . $post_title . '\']" class="wpt_auto_select_n_copy wpt_meta_box_shortcode mb-text-input mb-field" id="wpt_metabox_copy_content" readonly>'; // class='wpt_auto_select_n_copy'
echo '<a style="display:none;" class="button button-primary wpt_copy_button_metabox" data-target_id="wpt_metabox_copy_content">Copy</a>';
echo '<p style="color: green;font-weight:bold;display:none; padding-left: 12px;" class="wpt_metabox_copy_content"></p>';
}
//Now start metabox for shortcode Generator
function wpt_shortcode_configuration_metabox_render(){
global $post;
echo '<input type="hidden" name="wpt_shortcode_nonce_value" value="' . wp_create_nonce( plugin_basename( __FILE__ ) ) . '" />'; //We have to remove it later
include __DIR__ . '/post_metabox_form.php';
?>
<br style="clear: both;">
<?php
}
function wpt_shortcode_configuration_metabox_save_meta( $post_id, $post ) { // save the data
/*
* We need to verify this came from our screen and with proper authorization,
* because the save_post action can be triggered at other times.
*/
if ( ! isset( $_POST['wpt_shortcode_nonce_value'] ) ) { // Check if our nonce is set.
return;
}
// verify this came from the our screen and with proper authorization,
// because save_post can be triggered at other times
if( !wp_verify_nonce( $_POST['wpt_shortcode_nonce_value'], plugin_basename(__FILE__) ) ) {
return;
}
//Column Tab Update part
update_post_meta( $post_id, 'column_array', $_POST['column_array'] );
update_post_meta( $post_id, 'enabled_column_array', $_POST['enabled_column_array'] );
update_post_meta( $post_id, 'column_settings', $_POST['column_settings'] );
//Basic Part Update
update_post_meta( $post_id, 'basics', $_POST['basics'] );
//Table Style/Design part
update_post_meta( $post_id, 'table_style', $_POST['table_style'] );
//Conditions part conditions
update_post_meta( $post_id, 'conditions', $_POST['conditions'] );
//Conditions part conditions
update_post_meta( $post_id, 'mobile', $_POST['mobile'] );
//Conditions part conditions
update_post_meta( $post_id, 'search_n_filter', $_POST['search_n_filter'] );
//Pagination
update_post_meta( $post_id, 'pagination', $_POST['pagination'] );
//Pagination
update_post_meta( $post_id, 'config', $_POST['config'] );
}
add_action( 'save_post', 'wpt_shortcode_configuration_metabox_save_meta', 1, 2 ); //
\ No newline at end of file
<div id="wpt_configuration_form" class="wpt_shortcode_gen_panel">
<h3 style="margin: 0">
<a target="_blank" href="http://doc.codeastrology.com/woo-product-table-pro/#intro">Documentation</a> |
<a target="_blank" href="https://codeastrology.com/support/">Get Support</a> |
<a target="_blank" href="https://codeastrology.com/support/forums/forum/woo-product-table-pro-making-quick-order-table/">Forum</a> |
<a target="_blank" href="https://codeastrology.com/blog/">CodeAstrology Blog</a>
</h3>
<!-- New Version's Warning. We will remove it from 5.00 | End -->
<?php
/**
* Tab Maintenance. Table will be come from [tabs] folder based on $tab_array
* this $tab_arry will define, how much tab and tab content
*/
$tab_array = array(
'column_settings' => __( "Column", 'wpt_pro' ),
'basics' => __( 'Basics', 'wpt_pro' ),
'table_style' => __( 'Design', 'wpt_pro' ),
'conditions' => __( 'Conditions', 'wpt_pro' ),
'search_n_filter' => __( 'Search Box And Filter','wpt_pro' ),
'pagination' => __( 'Pagination', 'wpt_pro' ),
'mobile' => __( 'Mobile Issue', 'wpt_pro' ),
'config' => __( 'Configuration', 'wpt_pro' ),
);
echo '<nav class="nav-tab-wrapper">';
$active_nav = 'nav-tab-active';
foreach ($tab_array as $nav => $title) {
echo "<a href='#{$nav}' data-tab='{$nav}' class='wpt_nav_for_{$nav} wpt_nav_tab nav-tab " . esc_attr( $active_nav ) . "'>" . esc_html__( $title ). "</a>";
$active_nav = false;
}
echo '</nav>';
//Now start for Tab Content
$active_tab_content = 'tab-content-active';
foreach ($tab_array as $tab => $title) {
echo '<div class="wpt_tab_content tab-content ' . esc_attr( $active_tab_content ) . '" id="' . esc_attr( $tab ) . '">';
echo '<div class="fieldwrap">';
$tab_file_of_admin = WPT_BASE_DIR . 'admin/tabs/' . $tab . '.php';
if ( is_file( $tab_file_of_admin ) ) {
echo '<br>'; //Insert a break to each Tab's header
include $tab_file_of_admin; //WPT_BASE_DIR . 'admin/tabs/' . $tab . '.php';
} else {
echo '<h2>' . $tab . '.php ' . esc_html__( 'file is not found in tabs folder','wpt_pro' ) . '</h2>';
}
echo '</div>'; //End of .fieldwrap
echo '</div>'; //End of Tab content div
$active_tab_content = false; //Active tab content only for First
}
?>
</div>
<style>
/*****For Column Moveable Item*******/
ul#wpt_column_sortable li>span.handle{
background-image: url('<?php echo WPT_BASE_URL . 'images/move.png'; ?>');
}
</style>
<?php
/**
* CSS or Style file add for Admin Section.
*
* @since 1.0.0
* @update 1.0.3
*/
function wpt_style_js_adding_admin(){
wp_enqueue_style( 'wpt-admin-css', WOO_Product_Table::getPath( 'BASE_URL' ) . 'css/admin.css', array(), '1.0.0', 'all' );
/**
* Select2 CSS file including.
*
* @since 1.0.3
*/
wp_enqueue_style( 'select2', WOO_Product_Table::getPath( 'BASE_URL' ) . 'css/select2.min.css', array(), '1.8.2', 'all' );
//jQuery file including. jQuery is a already registerd to WordPress
wp_enqueue_script( 'jquery' );
//Includeing jQuery UI Core
wp_enqueue_script( 'jquery-ui-core' );
wp_enqueue_script( 'jquery-ui-sortable' );
/**
* Select2 jQuery Plugin file including.
* Here added min version. But also available regular version in same directory
*
* @since 1.0.3
*/
wp_enqueue_script( 'select2', WOO_Product_Table::getPath( 'BASE_URL' ) . 'js/select2.min.js', array( 'jquery' ), '4.0.5', true );
//Includeing Color Picker js and css at version 4.4
wp_enqueue_script( 'wp-color-picker' );
wp_enqueue_style( 'wp-color-picker' );
//WordPress Default Media Added only for addmin
wp_enqueue_media();
}
add_action( 'admin_enqueue_scripts', 'wpt_style_js_adding_admin', 99 );
/**
* For first load, It's specially loaded
*/
function wpt_admin_js_fast_load(){
wp_enqueue_script( 'wpt-admin-js', WOO_Product_Table::getPath( 'BASE_URL' ) . 'js/admin.js', array( 'jquery' ), '1.0.0', true );
}
add_action( 'admin_enqueue_scripts', 'wpt_admin_js_fast_load', 1 );
/**
* For removing Yoast SEO conflict
*/
function wpt_remove_wpseo_meta(){
remove_meta_box('wpseo_meta', 'wpt_product_table', 'normal');
}
add_action('add_meta_boxes','wpt_remove_wpseo_meta',100);
\ No newline at end of file
<?php
$meta_basics = get_post_meta( $post->ID, 'basics', true );
?>
<?php
/**
* To Get Category List of WooCommerce
* @since 1.0.0 -10
*/
$args = array(
'hide_empty' => false,
'orderby' => 'count',
'order' => 'DESC',
);
//WooCommerce Product Category Object as Array
$wpt_product_cat_object = get_terms('product_cat', $args);
?>
<div class="wpt_column">
<label class="wpt_label" for="wpt_product_slugs"><?php echo sprintf( esc_html__('Category Includes %s (Click to choose Categories) %s','wpt_pro'),'<small>','</small>');?></label>
<select name="basics[product_cat_ids][]" data-name="product_cat_ids" id="wpt_product_ids" class="wpt_fullwidth wpt_data_filed_atts" multiple>
<?php
foreach ( $wpt_product_cat_object as $category ) {
echo "<option value='{$category->term_id}' " . ( isset( $meta_basics['product_cat_ids'] ) && is_array( $meta_basics['product_cat_ids'] ) && in_array( $category->term_id, $meta_basics['product_cat_ids'] ) ? 'selected' : false ) . ">{$category->name} - {$category->slug} ({$category->count})</option>";
}
?>
</select>
</div>
<div class="wpt_column">
<label class="wpt_label"><?php esc_html_e( 'Product ID Include (Separate with comma)', 'wpt_pro' );?> <span style="color: #00B500;font-weight: normal;font-size: 80%; background-color: #ddd; padding: 0 5px;">New</span></label>
<input name="basics[post_include]" data-name="post_include" value="<?php echo isset( $meta_basics['post_include'] ) ? $meta_basics['post_include'] : ''; ?>" class="wpt_data_filed_atts" type="text" placeholder="Example: 1,2,3,4">
<p>To make table with specific product, Input product's ID - separate with comma.</p>
</div>
<div class="wpt_column">
<label class="wpt_label"><?php esc_html_e( 'Product ID Exclude (Separate with comma)', 'wpt_pro' );?></label>
<input name="basics[post_exclude]" data-name="post_exclude" value="<?php echo isset( $meta_basics['post_exclude'] ) ? $meta_basics['post_exclude'] : ''; ?>" class="wpt_data_filed_atts" type="text" placeholder="Example: 1,2,3,4">
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_product_slugs"><?php echo sprintf( esc_html__( 'Category Exclude %s (Click to choose Categories) %s', 'wpt_pro' ), '<small>', '</small>' );?></label>
<select name="basics[cat_explude][]" data-name="cat_explude" id="wpt_product_ids" class="wpt_fullwidth wpt_data_filed_atts" multiple>
<?php
foreach ( $wpt_product_cat_object as $category ) {
echo "<option value='{$category->term_id}' " . ( isset( $meta_basics['cat_explude'] ) && is_array( $meta_basics['cat_explude'] ) && in_array( $category->term_id, $meta_basics['cat_explude'] ) ? 'selected' : false ) . ">{$category->name} - {$category->slug} ({$category->count})</option>";
}
?>
</select>
</div>
<?php
$wpt_product_ids_tag = false;
/**
* To Get Category List of WooCommerce
* @since 1.0.0 -10
*/
$args = array(
'hide_empty' => true,
'orderby' => 'count',
'order' => 'DESC',
);
//WooCommerce Product Category Object as Array
$wpt_product_tag_object = get_terms('product_tag', $args);
?>
<div class="wpt_column">
<label class="wpt_label" for="product_tag_ids"><?php echo sprintf( esc_html__( 'Tag Includes %s (Click to choose Tags) %s', 'wpt_pro' ), '<small>', '</small>' );?></label>
<select name="basics[product_tag_ids][]" data-name="product_tag_ids" id="product_tag_ids" class="wpt_fullwidth wpt_data_filed_atts" multiple>
<?php
foreach ( $wpt_product_tag_object as $tags ) {
echo "<option value='{$tags->term_id}' " . ( isset( $meta_basics['product_tag_ids'] ) && is_array( $meta_basics['product_tag_ids'] ) && in_array( $tags->term_id, $meta_basics['product_tag_ids'] ) ? 'selected' : false ) . ">{$tags->name} - {$tags->slug} ({$tags->count})</option>";
}
?>
</select>
</div>
<div class="wpt_column" style="border: 1px solid #5ccc7d;background: #ebffee;padding: 10px;">
<label class="wpt_label wpt_table_ajax_action" for='wpt_table_minicart_position'><?php esc_html_e('Ajax Action (Enable/Disable)','wpt_pro');?></label>
<select name="basics[ajax_action]" data-name='ajax_action' id="wpt_table_ajax_action" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="ajax_active" <?php echo isset( $meta_basics['ajax_action'] ) && $meta_basics['ajax_action'] == 'ajax_active' ? 'selected' : false; ?>><?php esc_html_e('Active Ajax (Default)','wpt_pro');?></option>
<option value="no_ajax_action" <?php echo isset( $meta_basics['ajax_action'] ) && $meta_basics['ajax_action'] == 'no_ajax_action' ? 'selected' : false; ?>><?php esc_html_e('Disable Ajax Action','wpt_pro');?></option>
</select>
</div>
<div class="wpt_column">
<label class="wpt_label" for='wpt_table_minicart_position'><?php esc_html_e( 'Mini Cart Position', 'wpt_pro' );?></label>
<select name="basics[minicart_position]" data-name='minicart_position' id="wpt_table_minicart_position" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="top" <?php echo isset( $meta_basics['minicart_position'] ) && $meta_basics['minicart_position'] == 'top' ? 'selected' : false; ?>><?php esc_html_e( 'Top (Default)', 'wpt_pro' );?></option>
<option value="bottom" <?php echo isset( $meta_basics['minicart_position'] ) && $meta_basics['minicart_position'] == 'bottom' ? 'selected' : false; ?>><?php esc_html_e( 'Bottom', 'wpt_pro');?></option>
<option value="none" <?php echo isset( $meta_basics['minicart_position'] ) && $meta_basics['minicart_position'] == 'none' ? 'selected' : false; ?>><?php esc_html_e( 'None', 'wpt_pro' );?></option>
</select>
</div>
<div class="wpt_column">
<label class="wpt_label" for='wpt_table_table_class'><?php esc_html_e( 'Set a Class name for Table', 'wpt_pro' );?></label>
<input name="basics[table_class]" value="<?php echo isset( $meta_basics['table_class'] ) ? $meta_basics['table_class'] : ''; ?>" class="wpt_data_filed_atts" data-name="table_class" type="text" placeholder="<?php esc_attr_e( 'Product Table Class Name (Optional)', 'wpt_pro' ); ?>" id='wpt_table_table_class'>
</div>
<div class="wpt_column">
<label class="wpt_label" for='wpt_table_temp_number'><?php esc_html_e( 'Temporary Number for Table', 'wpt_pro' );?></label>
<input name="basics[temp_number]" class="wpt_data_filed_atts readonly" data-name="temp_number" type="text" placeholder="123" id='wpt_table_temp_number' value="<?php echo isset( $meta_basics['temp_number'] ) ? $meta_basics['temp_number'] : random_int( 10, 300 ); ?>" readonly="readonly">
<p><?php esc_html_e( 'This is not very important, But should different number for different shortcode of your table. Mainly to identify each table.', 'wpt_pro' );?></p>
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_add_to_cart_text"><?php esc_html_e( '(Add to cart) Text', 'wpt_pro' );?></label>
<input name="basics[add_to_cart_text]" class="wpt_data_filed_atts" data-name="add_to_cart_text" type="text" value="<?php echo isset( $meta_basics['add_to_cart_text'] ) ? $meta_basics['add_to_cart_text'] : __( 'Add to cart', 'wpt_pro' ); ?>" placeholder="<?php esc_attr_e( 'Example: Buy', 'wpt_pro' ); ?>" id="wpt_table_add_to_cart_text">
<p><?php echo sprintf( esc_html__( 'Put a Space (" ") for getting default %s Add to Cart Text %s', 'wpt_pro' ), '<b>', '</b>' );?></p>
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_add_to_cart_selected_text"><?php esc_html_e( '(Add to cart(Selected]) Text', 'wpt_pro' );?></label>
<input name="basics[add_to_cart_selected_text]" class="wpt_data_filed_atts" data-name="add_to_cart_selected_text" type="text" value="<?php echo isset( $meta_basics['add_to_cart_selected_text'] ) ? $meta_basics['add_to_cart_selected_text'] : __( 'Add to Cart (Selected)', 'wpt_pro' ); ?>" placeholder="<?php esc_attr_e( 'Example: Add to cart Selected', 'wpt_pro' ); ?>" id="wpt_table_add_to_cart_selected_text">
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_check_uncheck_text"><?php esc_html_e( '(All Check/Uncheck) Text', 'wpt_pro' );?></label>
<input name="basics[check_uncheck_text]" class="wpt_data_filed_atts" data-name="check_uncheck_text" type="text" value="<?php echo isset( $meta_basics['check_uncheck_text'] ) ? $meta_basics['check_uncheck_text'] : __( 'All Check/Uncheck','wpt_pro' ); ?>" placeholder="<?php esc_attr_e( 'Example: All Check/Uncheck', 'wpt_pro' );?>" id="wpt_table_check_uncheck_text">
</div>
<hr>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_author"><?php esc_html_e( 'AuthorID/UserID/VendorID (Optional)', 'wpt_pro' );?></label>
<input name="basics[author]" class="wpt_data_filed_atts" data-name="author" type="number" value="<?php echo isset( $meta_basics['author'] ) ? $meta_basics['author'] : ''; ?>" placeholder="Author ID/Vendor ID" id="wpt_table_author">
<p style="color: #006394;"><?php esc_html_e( 'Only AuthorID or AuthorName field for both [AuthorID/UserID/VendorID] or [author_name/username/VendorUserName]. Don\'t use both.', 'wpt_pro' );?></p>
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_author_name"><?php esc_html_e( 'author_name/username/VendorUserName (Optional)', 'wpt_pro' );?></label>
<input name="basics[author_name]" class="wpt_data_filed_atts" data-name="author_name" type="text" value="<?php echo isset( $meta_basics['author_name'] ) ? $meta_basics['author_name'] : ''; ?>" placeholder="Author username/ Vendor username" id="wpt_table_author_name">
<p style="color: #006394;"><?php esc_html_e( 'Only AuthorID or AuthorName field for both [AuthorID/UserID/VendorID] or [author_name/username/VendorUserName]. Don\'t use both.', 'wpt_pro' );?></p>
</div>
<?php
$colums_disable_array = WOO_Product_Table::$colums_disable_array; //For first time only
$meta_column_array = $columns_array = get_post_meta( $post->ID, 'column_array', true );
if( !$meta_column_array && empty( $meta_column_array ) ){
$columns_array = WOO_Product_Table::$columns_array;
}
unset($columns_array['description']);
$meta_enable_column_array = get_post_meta( $post->ID, 'enabled_column_array', true );
$column_settings = get_post_meta( $post->ID, 'column_settings', true );
$additional_collumn = array_diff(array_keys($columns_array), array_keys( WOO_Product_Table::$columns_array ));
$description_off = isset( $column_settings['description_off'] ) ? $column_settings['description_off'] : 'on';
$description_off = $description_off == 'off' ? 'checked="checked"' : '';
?>
<ul id="wpt_column_sortable">
<?php
foreach( $columns_array as $keyword => $title ){
if( $meta_enable_column_array && !empty( $meta_enable_column_array ) && is_array( $meta_enable_column_array ) ){
$enabled_class = $checked_attribute = '';
if( in_array( $keyword, array_keys( $meta_enable_column_array ) ) ){
$enabled_class = 'enabled';
$checked_attribute = ' checked="checked"';
}
}else{
$enabled_class = 'enabled';
$checked_attribute = ' checked="checked"';
if( in_array( $keyword, $colums_disable_array ) ){
$enabled_class = $checked_attribute = '';
}
}
$readOnly = ( $keyword == 'check' ? 'readonly' : false );
?>
<li class="wpt_sortable_peritem <?php echo esc_attr( $enabled_class ); ?> column_keyword_<?php echo esc_attr( $keyword ); ?>">
<span title="<?php esc_attr_e( 'Move Handle', 'wpt_pro' );?>" class="handle"></span>
<div class="wpt_shortable_data">
<input placeholder="<?php echo $keyword; ?>" name="column_array[<?php echo $keyword; ?>]" data-column_title="<?php echo esc_attr__( $title,'wpt_pro' ); ?>" data-keyword="<?php echo esc_attr( $keyword ); ?>" class="colum_data_input <?php echo esc_attr( $keyword ); ?>" type="text" value="<?php echo $title; ?>" <?php echo $readOnly; ?>>
<?php if( $keyword == 'product_title' ){ ?>
<div class="description_off_wrapper">
<label for="description_off"><input title="Disable Deactivate Description from Title Column" name="column_settings[description_off]" id="description_off" class="description_off" type="checkbox" value="off" <?php echo $description_off; ?>> Disable Description</label>
</div>
<?php } ?>
<?php
//var_dump($keyword,$additional_collumn);
if( in_array($keyword,$additional_collumn) ){
echo "<span class='wpt_column_cross'>X</span>";
}
?>
</div>
<span title="<?php esc_attr_e( 'Move Handle', 'wpt_pro' );?>" class="handle checkbox_handle">
<input name="enabled_column_array[<?php echo $keyword; ?>]" value="<?php echo esc_attr__( $title ); ?>" title="<?php echo esc_html__( 'Active Inactive Column', 'wpt_pro' );?>" class="checkbox_handle_input <?php echo esc_attr( $enabled_class ); ?>" type="checkbox" data-column_keyword="<?php echo esc_attr( $keyword ); ?>" <?php echo $checked_attribute; ?>>
</span>
</li>
<?php
}
?>
</ul>
<div class="tax_cf_handle_wrapper">
<p class="tax_cf_message"><?php echo sprintf( esc_html__( 'To add %sTaxonomy%s or %sCustom_Field%s as Table Column for your Table, try from following bottom section before [Publish/Update] your post.', 'wpt_pro' ), '<strong>', '</strong>', '<strong>', '</strong>' );?></p>
<div id="tax_cf_manager">
<div class="tax_cf_manager_column tax_cf_manager_choose_column">
<label class="wpt_label"><?php esc_html_e( 'Choose Type', 'wpt_pro' );?></label>
<select class="taxt_cf_type">
<option value="cf_"><?php esc_html_e( 'Custom Field', 'wpt_pro' );?></option>
<option value="tax_"><?php esc_html_e( 'Custom Taxonomy', 'wpt_pro' );?></option>
</select>
</div>
<div class="tax_cf_manager_column tax_cf_manager_keyword_column">
<label class="wpt_label"><?php esc_html_e( 'Keyword (only keyword of you Taxonomy or CustomField', 'wpt_pro' );?></label>
<input type="text" class="taxt_cf_input" placeholder="<?php esc_attr_e( 'eg: color', 'wpt_pro' );?>">
</div>
<div class="tax_cf_manager_column tax_cf_manager_title_column">
<label class="wpt_label"><?php esc_html_e( 'Table Column Title/Name', 'wpt_pro' );?></label>
<input type="text" class="taxt_cf_title" placeholder="<?php esc_attr_e( 'eg: Product Color', 'wpt_pro' );?>">
</div>
</div>
<div>
<a id="tax_cf_adding_button" class="button button-primary tax_cf_add_button"><?php esc_html_e( 'Add as Column)', 'wpt_pro' );?></a>
</div>
<p class="tax_cf_suggesstion">
<?php
echo sprintf(
esc_html__( 'For custom field, you can use %sAdvanced Custom Fields%s plugin AND for Taxonomy, you can use %sCustom Post Types and Custom Fields creator – WCK%s plugin.%sBesides there are lot of plugin available at %s, Just search on WordPress archives.', 'wpt_pro' ),
'<a href="https://wordpress.org/plugins/advanced-custom-fields/" target="_blank">',
'</a>',
'<a href="https://wordpress.org/plugins/wck-custom-fields-and-custom-post-types-creator/" target="_blank">',
'</a>',
'<br>',
'<a href="https://wordpress.org/" target="_blank">wordpress.org</a>'
);
?>
</p>
<br style="clear: both;">
</div>
<br>
<div class="wpt_column">
<label style="display: inline;width: inherit;" class="wpt_label wpt_column_hide_unhide_tab" for="wpt_column_hide_unhide"><?php esc_html_e( 'Hide Table Head', 'wpt_pro' );?></label>
<input style="width: 20px;height:20px;" name="column_settings[table_head]" type="checkbox" id="wpt_column_hide_unhide" <?php echo isset( $column_settings['table_head'] ) ? 'checked="checked"' : ''; ?>>
</div>
\ No newline at end of file
<?php
$meta_conditions = get_post_meta( $post->ID, 'conditions', true );
?>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_shorting"><?php esc_html_e( 'Sorting/Order', 'wpt_pro' ); ?></label>
<select name="conditions[sort]" data-name='sort' id="wpt_table_shorting" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="ASC" <?php echo isset( $meta_conditions['sort'] ) && $meta_conditions['sort'] == 'ASC' ? 'selected' : ''; ?>><?php esc_html_e( 'ASCENDING (Default)', 'wpt_pro' ); ?></option>
<option value="DESC" <?php echo isset( $meta_conditions['sort'] ) && $meta_conditions['sort'] == 'DESC' ? 'selected' : ''; ?>><?php esc_html_e( 'DESCENDING', 'wpt_pro' ); ?></option>
<option value="random" <?php echo isset( $meta_conditions['sort'] ) && $meta_conditions['sort'] == 'random' ? 'selected' : ''; ?>><?php esc_html_e( 'Random', 'wpt_pro' ); ?></option>
</select>
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_sort_order_by"><?php esc_html_e( 'Order By', 'wpt_pro' ); ?></label>
<select name="conditions[sort_order_by]" data-name='sort_order_by' id="wpt_table_sort_order_by" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="name" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'name' ? 'selected' : ''; ?>><?php esc_html_e( 'Name (Default)', 'wpt_pro' ); ?></option>
<option value="menu_order" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'menu_order' ? 'selected' : ''; ?>><?php esc_html_e( 'Menu Order', 'wpt_pro' ); ?></option> <!-- default menu_order -->
<option value="meta_value" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'meta_value' ? 'selected' : ''; ?>><?php esc_html_e( 'Custom Meta Value', 'wpt_pro' ); ?></option>
<option value="meta_value_num" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'meta_value_num' ? 'selected' : ''; ?>><?php esc_html_e( 'Custom Meta Number (if numeric data)', 'wpt_pro' ); ?></option>
<option value="date" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'date' ? 'selected' : ''; ?>><?php esc_html_e( 'Date', 'wpt_pro' ); ?></option>
<option value="ID" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'ID' ? 'selected' : ''; ?>><?php esc_html_e( 'ID', 'wpt_pro' ); ?></option>
<option value="author" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'author' ? 'selected' : ''; ?>><?php esc_html_e( 'Author', 'wpt_pro' ); ?></option>
<option value="title" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'title' ? 'selected' : ''; ?>><?php esc_html_e( 'Product Title', 'wpt_pro' ); ?></option>
<option value="type" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'type' ? 'selected' : ''; ?>><?php esc_html_e( 'Type', 'wpt_pro' ); ?></option>
<option value="modified" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'modified' ? 'selected' : ''; ?>><?php esc_html_e( 'Modified', 'wpt_pro' ); ?></option>
<option value="parent" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'parent' ? 'selected' : ''; ?>><?php esc_html_e( 'Parent', 'wpt_pro' ); ?></option>
<option value="rand" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'rand' ? 'selected' : ''; ?>><?php esc_html_e( 'Rand', 'wpt_pro' ); ?></option>
<option value="comment_count" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'comment_count' ? 'selected' : ''; ?>><?php esc_html_e( 'Reviews/Comment Count', 'wpt_pro' ); ?></option>
<option value="relevance" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'relevance' ? 'selected' : ''; ?>><?php esc_html_e( 'Relevance', 'wpt_pro' ); ?></option>
<option value="none" <?php echo isset( $meta_conditions['sort_order_by'] ) && $meta_conditions['sort_order_by'] == 'none' ? 'selected' : ''; ?>><?php esc_html_e( 'None', 'wpt_pro' ); ?></option>
</select>
<p>Chose 'Custom_meta or custom_meta_value' - if you want to sort by price, model, sku, color itc. <b>For price or any number, Please chose <span>Custom Meta value(if number)</span></b></p>
</div>
<div style="display: none;" class="wpt_column" id="wpt_meta_value_wrapper">
<label class="wpt_label" for="wpt_product_meta_value_sort"><?php echo sprintf( esc_html__( 'Meta Value for [Custom Meta Value] of %s Custom Meta Value %s', 'wpt_pro' ),'<b>','</b>' ); ?></label>
<input name="conditions[meta_value_sort]" value="<?php echo isset( $meta_conditions['meta_value_sort'] ) ? $meta_conditions['meta_value_sort'] : ''; ?>" data-name='meta_value_sort' id="wpt_product_meta_value_sort" class="wpt_fullwidth wpt_data_filed_atts" type="text">
<p style="color: #00aef0;"><?php esc_html_e( 'Type your Right meta value here. EG: "_sku,_price,_customNumber" - use any one only, there should now and space', 'wpt_pro' ); ?></p>
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_product_min_price"><?php esc_html_e( 'Set Minimum Price', 'wpt_pro' ); ?></label>
<input name="conditions[min_price]" data-name='min_price' value="<?php echo isset( $meta_conditions['min_price'] ) ?$meta_conditions['min_price'] : ''; ?>" id="wpt_product_min_price" class="wpt_fullwidth wpt_data_filed_atts" type="number" pattern="[0-9]*">
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_product_max_price"><?php esc_html_e( 'Set Maximum Price', 'wpt_pro' ); ?></label>
<input name="conditions[max_price]" data-name='max_price' value="<?php echo isset( $meta_conditions['max_price'] ) ?$meta_conditions['max_price'] : ''; ?>" id="wpt_product_max_price" class="wpt_fullwidth wpt_data_filed_atts" type="number" pattern="[0-9]*">
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_description_type"><?php esc_html_e( 'Description Type', 'wpt_pro' ); ?></label>
<select name="conditions[description_type]" data-name='description_type' id="wpt_table_description_type" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="short_description" <?php echo isset( $meta_conditions['description_type'] ) && $meta_conditions['description_type'] == 'short_description' ? 'selected' : ''; ?>><?php esc_html_e( 'Short Description', 'wpt_pro' ); ?></option><!-- Default Value -->
<option value="description" <?php echo isset( $meta_conditions['description_type'] ) && $meta_conditions['description_type'] == 'description' ? 'selected' : ''; ?>><?php esc_html_e( 'Long Description', 'wpt_pro' ); ?></option>
</select>
<p style="color: #0087be;"><?php echo sprintf( esc_html__( 'Here was %sdescription_lenght%s, But from 3.6, We have removed %sdescription_lenght%s', 'wpt_pro' ),'<b>','</b>','<b>','</b>' ); ?>.</p>
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_only_stock"><?php esc_html_e( 'Only Stock Product', 'wpt_pro' ); ?></label>
<select name="conditions[only_stock]" data-name='only_stock' id="wpt_table_only_stock" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="no" <?php echo isset( $meta_conditions['only_stock'] ) && $meta_conditions['only_stock'] == 'no' ? 'selected' : ''; ?>><?php esc_html_e( 'All Product', 'wpt_pro' ); ?></option>
<option value="yes" <?php echo isset( $meta_conditions['only_stock'] ) && $meta_conditions['only_stock'] == 'yes' ? 'selected' : ''; ?>><?php esc_html_e( 'Yes (Only Stock)', 'wpt_pro' ); ?></option>
</select>
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_posts_per_page"><?php esc_html_e( 'Post Limit/Per Load Limit', 'wpt_pro' ); ?></label>
<input name="conditions[posts_per_page]" data-name='posts_per_page' value="<?php echo isset( $meta_conditions['posts_per_page'] ) ?$meta_conditions['posts_per_page'] : '20'; ?>" id="wpt_posts_per_page" class="wpt_fullwidth wpt_data_filed_atts" type="number" pattern="[0-9]*" placeholder="<?php esc_attr_e( 'Eg: 50 (for display 20 products', 'wpt_pro' ); ?>" value="20">
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_type"><?php esc_html_e( 'Third Party Addons Supporting ', 'wpt_pro' ); ?></label>
<select name="conditions[table_type]" data-name='table_type' id="wpt_table_table_type" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="normal_table" <?php echo isset( $meta_conditions['table_type'] ) && $meta_conditions['table_type'] == 'normal_table' ? 'selected' : ''; ?>><?php esc_html_e( 'No', 'wpt_pro' ); ?></option>
<option value="advance_table" <?php echo isset( $meta_conditions['table_type'] ) && $meta_conditions['table_type'] == 'advance_table' ? 'selected' : ''; ?>><?php esc_html_e( 'Yes', 'wpt_pro' ); ?></option>
</select>
</div>
\ No newline at end of file
<?php
$meta_mobile = get_post_meta( $post->ID, 'mobile', true );
?>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_mobile_responsive"><?php esc_html_e( 'Mobile Responsive', 'wpt_pro' ); ?></label>
<select name="mobile[mobile_responsive]" data-name='mobile_responsive' id="wpt_table_mobile_responsive" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="mobile_responsive" <?php echo isset( $meta_mobile['mobile_responsive'] ) && $meta_mobile['mobile_responsive'] == 'mobile_responsive' ? 'selected' : ''; ?>><?php esc_html_e( 'Default (Yes Responsive)', 'wpt_pro' ); ?></option>
<option value="no_responsive" <?php echo isset( $meta_mobile['mobile_responsive'] ) && $meta_mobile['mobile_responsive'] == 'no_responsive' ? 'selected' : ''; ?>><?php esc_html_e( 'No Responsive', 'wpt_pro' ); ?></option>
</select>
</div>
<?php
$colums_disable_array = array();//WOO_Product_Table::$colums_disable_array;
$colums_disable_array = array_map(function($value){
$minus_from_disabledArray = array(
'quick',
'wishlist',
'quoterequest',
'Message',
'attribute',
'variations',
'wishlist',
'quoterequest',
//'ssss',
);
return !in_array( $value, $minus_from_disabledArray ) ? $value : false;
}, $colums_disable_array);
$colums_disable_array = array_filter( $colums_disable_array );
//$colums_disable_array[] = 'thumbnails';
if( isset( $meta_mobile['disable'] ) && is_array( $meta_mobile['disable'] ) ){
$colums_disable_array = $meta_mobile['disable'];
}elseif( isset( $meta_mobile['mobile_responsive'] ) && !isset( $meta_mobile['disable'] ) ){
$colums_disable_array = array();
}
$meta_column_array = $columns_array = get_post_meta( $post->ID, 'column_array', true ); //Getting value from updated column tab
if( !$meta_column_array && empty( $meta_column_array ) ){
$columns_array = WOO_Product_Table::$columns_array;
}
unset( $columns_array['product_title'] );
unset( $columns_array['price'] );
unset( $columns_array['action'] );
unset( $columns_array['check'] );
?>
<ul id="wpt_keyword_hide_mobile">
<h1 style="color: #D01040;"><?php esc_html_e( 'Hide On Mobile', 'wpt_pro' ); ?></h1>
<p style="padding: 0;margin: 0;"><?php esc_html_e( 'Pleach check you column to hide from Mobile. For all type Table(Responsive or Non-Responsive).', 'wpt_pro' ); ?></p>
<hr>
<?php
foreach( $columns_array as $keyword => $title ){
$enabled_class = 'enabled';
$checked_attribute = ' checked="checked"';
if( !in_array( $keyword, $colums_disable_array ) ){
$enabled_class = $checked_attribute = '';
}
?>
<li class="hide_on_mobile_permits <?php echo $enabled_class; ?> column_keyword_<?php echo esc_attr( $keyword ); ?>">
<div class="wpt_mobile_hide_keyword">
<b data-column_title="<?php echo esc_attr( $title ); ?>" data-keyword="<?php echo esc_attr( $keyword ); ?>" class="mobile_issue_field <?php echo esc_attr( $keyword ); ?>" type="text" ><?php echo $title; ?></b>
</div>
<span title="<?php echo esc_attr( $keyword ); ?>" title="<?php esc_attr_e( 'Move Handle', 'wpt_pro' ); ?>" class="handle checkbox_handle">
<input name="mobile[disable][]" value="<?php echo esc_attr( $keyword ); ?>" title="<?php esc_attr_e( 'Active Inactive Column', 'wpt_pro' ); ?>" class="checkbox_handle_input <?php echo $enabled_class; ?>" type="checkbox" data-column_keyword="<?php echo esc_attr( $keyword ); ?>" <?php echo $checked_attribute; ?>>
</span>
</li>
<?php
}
?>
</ul>
<?php
$pagination = get_post_meta( $post->ID, 'pagination', true );
?>
<div class="wpt_column">
<label class="wpt_label" for="wpt_table_shorting"><?php esc_html_e( 'Pagination on/of', 'wpt_pro' ); ?></label>
<select name="pagination[start]" data-name='sort' id="wpt_table_shorting" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="1" <?php echo isset( $pagination['start'] ) && $pagination['start'] == '1' ? 'selected' : ''; ?>><?php esc_html_e( 'Enable (Default)', 'wpt_pro' ); ?></option>
<option value="0" <?php echo isset( $pagination['start'] ) && $pagination['start'] == '0' ? 'selected' : ''; ?>><?php esc_html_e( 'Disable', 'wpt_pro' ); ?></option>
</select>
</div>
<b><?php esc_html_e( 'To change style, go to Design tab', 'wpt_pro' ); ?></b>
\ No newline at end of file
<?php
$meta_search_n_filter = get_post_meta( $post->ID, 'search_n_filter', true );
?>
<div class="wpt_column">
<label class="wpt_label" for="wpt_search_box"><?php esc_html_e( 'Advance Search Box', 'wpt_pro' ); ?></label>
<select name="search_n_filter[search_box]" data-name='search_box' id="wpt_search_box" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="no" <?php echo isset( $meta_search_n_filter['search_box'] ) && $meta_search_n_filter['search_box'] == 'no' ? 'selected' : ''; ?>><?php esc_html_e( 'No Search Box', 'wpt_pro' ); ?></option>
<option value="yes" <?php echo isset( $meta_search_n_filter['search_box'] ) && $meta_search_n_filter['search_box'] == 'yes' ? 'selected' : ''; ?>><?php esc_html_e( 'Show Search Box', 'wpt_pro' ); ?></option>
</select>
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_taxonomy_keywords"><?php esc_html_e( 'Taxonomy Keywords for Advance Search Box (Separate with comma[,])', 'wpt_pro' ); ?></label>
<input name="search_n_filter[taxonomy_keywords]" data-name='taxonomy_keywords' id="wpt_taxonomy_keywords" value="<?php echo isset( $meta_search_n_filter['taxonomy_keywords'] ) ?$meta_search_n_filter['taxonomy_keywords'] : 'product_cat,product_tag'; ?>" class="wpt_fullwidth wpt_data_filed_atts" type="text" value="" placeholder="<?php esc_attr_e( 'eg: product_cat,product_tag,color,size', 'wpt_pro' ); ?>">
<p><?php echo sprintf( esc_html__( 'There are lot of %s for creating Taxonomy. For Example: You can use %s Plugin.', 'wpt_pro' ),
'<a href="https://wordpress.org/plugins/search/Taxonomy/" target="_blank">Taxonomy Creator Plugin available</a>',
'<a href="https://wordpress.org/plugins/wck-custom-fields-and-custom-post-types-creator/" target="_blank">Custom Post Types and Custom Fields creator – WCK</a>'
);
?>
</p>
</div>
<?php
if( isset( $meta_search_n_filter['taxonomy_keywords'] ) && strlen( $meta_search_n_filter['taxonomy_keywords'] ) > 0 ){
$snf_keywords = $meta_search_n_filter['taxonomy_keywords'];
$snf_keywords = explode( ',', $snf_keywords );
foreach( $snf_keywords as $per_keyword ){
$args = array(
'hide_empty' => false,
'orderby' => 'count',
'order' => 'DESC',
);
//WooCommerce Product Category Object as Array
$tax_object = get_terms( $per_keyword, $args );
if( !isset( $tax_object->errors ) ){
?>
<div class="wpt_column">
<label class="wpt_label" for="filter_for_<?php echo $per_keyword; ?>"><?php echo sprintf( esc_html__('Choose [%s] %s (For Advanced Searchbox Filter) %s','wpt_pro'),$per_keyword,'<small>','</small>');?></label>
<select name="search_n_filter[<?php echo $per_keyword; ?>][]" data-name="<?php echo $per_keyword; ?>" id="filter_for_<?php echo $per_keyword; ?>" class="wpt_fullwidth wpt_data_filed_atts wpt_select2" multiple>
<?php
foreach ( $tax_object as $tax_item ) {
$tax_array_key = $per_keyword;
echo "<option value='{$tax_item->term_id}' " . ( isset( $meta_search_n_filter[$tax_array_key] ) && is_array( $meta_search_n_filter[$tax_array_key] ) && in_array( $tax_item->term_id, $meta_search_n_filter[$tax_array_key] ) ? 'selected' : false ) . ">{$tax_item->name} - {$tax_item->slug} ({$tax_item->count})</option>";
}
?>
</select>
</div>
<?php
}
}
}else{
?>
<p style="background-color: #dd9933;padding: 8px;"><?php esc_html_e( 'To get Taxonomy customization, Please save/update this shortcode.', 'wpt_pro' ); ?></p>
<?php
}
?>
<?php
/**
* To Get Category List of WooCommerce
* @since 1.0.0 -10
*/
?>
<div class="wpt_column">
<label class="wpt_label" for="wpt_filter_box"><?php esc_html_e( 'Mini Filter', 'wpt_pro' ); ?></label>
<select name="search_n_filter[filter_box]" data-name='filter_box' id="wpt_filter_box" class="wpt_fullwidth wpt_data_filed_atts" >
<option value="no" <?php echo isset( $meta_search_n_filter['filter_box'] ) && $meta_search_n_filter['filter_box'] == 'no' ? 'selected' : ''; ?>><?php esc_html_e( 'No Filter', 'wpt_pro' ); ?></option>
<option value="yes" <?php echo isset( $meta_search_n_filter['filter_box'] ) && $meta_search_n_filter['filter_box'] == 'yes' ? 'selected' : ''; ?>><?php esc_html_e( 'Filter Show', 'wpt_pro' ); ?></option>
</select>
</div>
<div class="wpt_column">
<label class="wpt_label" for="wpt_filter"><?php esc_html_e( 'Taxonomy Keywords for Filter (Separate with comma[,])', 'wpt_pro' ); ?></label>
<input name="search_n_filter[filter]" data-name='filter' id="wpt_filter" value="<?php echo isset( $meta_search_n_filter['filter'] ) ?$meta_search_n_filter['filter'] : 'product_cat,product_tag'; ?>" class="wpt_fullwidth wpt_data_filed_atts" type="text" value="" placeholder="<?php esc_attr_e( 'eg: product_cat,product_tag,color,size', 'wpt_pro' ); ?>">
<p><?php echo sprintf( esc_html__( 'There are lot of %s for creating Taxonomy. For Example: You can use %s Plugin.', 'wpt_pro' ),
'<a href="https://wordpress.org/plugins/search/Taxonomy/" target="_blank">Taxonomy Creator Plugin available</a>',
'<a href="https://wordpress.org/plugins/wck-custom-fields-and-custom-post-types-creator/" target="_blank">Custom Post Types and Custom Fields creator – WCK</a>'
);
?>
</p>
</div>
<?php
include 'updater_class.php';
$option_name = WOO_Product_Table::$options_name;
$purchase_code = get_option( $option_name );
$updtr = new WOO_WPT_Plugin_updater($purchase_code,WOO_Product_Table::$item_id);
$updtr->current_version = WOO_Product_Table::getVersion();
$updtr->plugin_folder = 'woo-product-table-pro';
$updtr->plugin_file = 'woo-product-table-pro';
$updtr->setUpdateMessage('<br>Please <a style="color: #d00;" href="' . admin_url('edit.php?post_type=wpt_product_table&page=wpt-activate-purchase-code') . '">Active your license</a> by your Purchase Code.');
$updtr->start();
//$updtr->deleteTransient();
/*
add_action( 'load-plugins.php', 'wpt_plugin_updater_loader' );
add_action( 'load-edit.php', 'wpt_plugin_updater_loader' );
add_action( 'load-index.php', 'wpt_plugin_updater_loader' );
add_action( 'load-plugin-install.php', 'wpt_plugin_updater_loader' );
add_action( 'load-plugin-editor.php', 'wpt_plugin_updater_loader' );
function wpt_plugin_updater_loader() {
$option_name = WOO_Product_Table::$options_name;
$purchase_code = get_option( $option_name );
$updtr = new WOO_WPT_Plugin_updater($purchase_code,WOO_Product_Table::$item_id);
$updtr->current_version = WOO_Product_Table::getVersion();
$updtr->plugin_folder = 'woo-product-table-pro';
$updtr->plugin_file = 'woo-product-table-pro';
$updtr->setUpdateMessage('<br>Please <a style="color: #d00;" href="' . admin_url('edit.php?post_type=wpt_product_table&page=wpt-activate-purchase-code') . '">Active your license</a> by your Purchase Code.');
$updtr->start();
//$updtr->deleteTransient();
}
*/
function wpt_updater_admin_menu() {
add_submenu_page( 'edit.php?post_type=wpt_product_table', esc_html__( 'Activate Purchase Code', 'wpt_pro' ), esc_html__( 'Activate', 'wpt_pro' ), 'edit_theme_options', 'wpt-activate-purchase-code', 'wpt_activate_purchase_code_page' );
}
add_action( 'admin_menu', 'wpt_updater_admin_menu' );
function wpt_activate_purchase_code_page(){
$option_name = WOO_Product_Table::$options_name;//'wpt_codecanyon_purchase_code';
if( isset( $_POST['purchase_code'] ) && !empty( $_POST['purchase_code'] ) ){
$inserted_purchase_code = $_POST['purchase_code'];
update_option( $option_name, $inserted_purchase_code );
$submit = new WOO_WPT_Plugin_updater( $inserted_purchase_code,WOO_Product_Table::$item_id);
$submit->updateTransient();
}
$status = "<span class='purchase_code_inactive'>Inactive</span>";
$purchase_code = get_option( $option_name );
$updtr = new WOO_WPT_Plugin_updater($purchase_code,WOO_Product_Table::$item_id);
$saved_transient = get_transient($updtr->getTransientName() . '_response');
if($saved_transient){
$response = $saved_transient;
}else{
$updtr->updateJSONTransient();
$response = $updtr->getResponse();
}
$today = time();
$supported_until = $response_item_id = $support_end_msg = false;
$item_id = WOO_Product_Table::$item_id;
if( isset( $response['supported_until'] ) && isset( $response['item']['id'] ) ){
$supported_until = strtotime($response['supported_until']);
$response_item_id = $response['item']['id'];
}
//var_dump($supported_until,$varification->getErrors());
if( $supported_until && $supported_until > $today && $response_item_id == $item_id ){
$status = "<span class='purchase_code_active'>Active</span>";
$support_end_msg .= '<p class="updated notice notice-success">';
$support_end_msg .= "You able to get Automatic update from Plugin page.";
$support_end_msg .= '<br><img class="rate_us_image" src="' . WOO_Product_Table::getPath( 'BASE_URL' ) . 'images/updater.png">';
$support_end_msg .= '</p>';
}elseif( $supported_until && $supported_until < $today && $response_item_id == $item_id ){
$support_end_msg .= '<p class="updated notice notice-warning updater_warning_message">';
$support_end_msg .= "Your Support has Expired. To get Auto Update. You need to extend your support for our Proudct.";
$support_end_msg .= "<br>Otherwise, Please login to your codecanyon account. Download Plugin. And Install Manually.";
$support_end_msg .= "<br><b>Manually Install:</b><br> First deactivate plugin, then delete, then install, then activate.";
$support_end_msg .= '</p>';
}elseif( empty( $purchase_code ) ){
$support_end_msg .= "<h1 class='updated notice notice-warning' style='color: #abc;'>No Purchase Code</h1>";
}else{
$support_end_msg .= "<h1 class='updated notice notice-warning' style='color: #e00;'>Invalid Purchase Code</h1>";
}
//$updtr->deleteTransient();
//$stats = $updtr->getResponse();
?>
<div class="wrap">
<h2></h2>
<div class="purchase_code_wrapper">
<h3>Plugin Activate here:</h3>
<form action="" method="POST">
<input name="purchase_code" type="text" value="<?php echo $purchase_code; ?>" style="width: 500px;max-width: 80%;padding: 5px;margin-bottom: 10px;font-size: 19px;color: #b9b9b9;" placeholder="Input your Purchase code"> <?php echo $status; ?><br>
<button class="button button-primary button-large" type="submit">Submit</button>
</form>
<hr>
<h3>Status</h3>
<div class="purchase_status">
<?php echo $support_end_msg; ?>
</div>
<div>
<?php
if( isset($response) && is_array( $response ) && count( $response ) > 0 ){
echo '<b>Other Info</b>';
echo '<ol>';
foreach($response as $key=>$value){
echo !is_array($value) ? "<li><b>{$key}:</b> {$value}</li>" : false;
}
echo '</ol>';
echo '<div style="width: 100%;background: white;display: block;padding: 10px;margin-top: 20px;">';
if( isset($response['item']) && is_array( $response['item'] ) && count( $response['item'] ) > 0 ){
unset($response['item']['description']);
unset($response['item']['summary']);
echo "Additinal Info";
echo '<ol>';
foreach( $response['item'] as $ky=>$itm ){
echo !is_array($itm) ? "<li><u>{$ky}:</u> {$itm}</li>" : false;
}
echo '</ol>';
}
echo '</div>';
}
?>
</div>
</div>
</div>
<?php
//$updtr->deleteTransient();
}
<?php
if ( ! function_exists('wpt_product_table_post') ) {
/**
* Create Custom post type for Product Table. From now, we will store our shortcode or shortcode's value in this post as meta value
*
* @since 4.1
* @link https://codex.wordpress.org/Post_Types See details at WordPress.org about Custom Post Type
*/
function wpt_product_table_post() {
$icon = WOO_Product_Table::getPath( 'BASE_URL' ) . 'images/table_icon.png';
$labels = array(
'name' => _x( 'Product Table', 'Product Table', 'wpt_pro' ),
'singular_name' => _x( 'PRODUCT TABLE', 'PRODUCT TABLE', 'wpt_pro' ),
'menu_name' => __( 'PRODUCT TABLE', 'wpt_pro' ),
'name_admin_bar' => __( 'Product Table', 'wpt_pro' ),
'archives' => __( 'Product Table Archives', 'wpt_pro' ),
'attributes' => __( 'Product Table Attributes', 'wpt_pro' ),
'parent_item_colon' => __( 'Parent Shortcode:', 'wpt_pro' ),
'all_items' => __( 'Product Table', 'wpt_pro' ),
'add_new_item' => __( 'Add New', 'wpt_pro' ),
'add_new' => __( 'Add New', 'wpt_pro' ),
'new_item' => __( 'New Product Table', 'wpt_pro' ),
'edit_item' => __( 'Edit Product Table', 'wpt_pro' ),
'update_item' => __( 'Update Product Table', 'wpt_pro' ),
'view_item' => __( 'View Product Table', 'wpt_pro' ),
'view_items' => __( 'View Product Tables', 'wpt_pro' ),
'search_items' => __( 'Search Product Table', 'wpt_pro' ),
'not_found' => __( 'Not found', 'wpt_pro' ),
'not_found_in_trash' => __( 'Not found in Trash', 'wpt_pro' ),
'featured_image' => __( 'Featured Image', 'wpt_pro' ),
'set_featured_image' => __( 'Set featured image', 'wpt_pro' ),
'remove_featured_image' => __( 'Remove featured image', 'wpt_pro' ),
'use_featured_image' => __( 'Use as featured image', 'wpt_pro' ),
'insert_into_item' => __( 'Insert into Product Table', 'wpt_pro' ),
'uploaded_to_this_item' => __( 'Uploaded to this Product Table', 'wpt_pro' ),
'items_list' => __( 'Product Table list', 'wpt_pro' ),
'items_list_navigation' => __( 'Product Table list navigation', 'wpt_pro' ),
'filter_items_list' => __( 'Filter Product Table list', 'wpt_pro' ),
);
$args = array(
'label' => __( 'PRODUCT TABLE', 'wpt_pro' ),
'description' => __( 'Generate your shortcode for Product Table.', 'wpt_pro' ),
'labels' => $labels,
'supports' => array('title'),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 40,
'menu_icon' => $icon,//'dashicons-list-view',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => false,
'exclude_from_search' => true,
'publicly_queryable' => true,
'capability_type' => 'post',
'register_meta_box_cb' => 'wpt_shortcode_metabox',
);
register_post_type( 'wpt_product_table', $args );
}
add_action( 'init', 'wpt_product_table_post', 0 );
}
//Showing shortcode in All Shortcode page
function wpt_shortcode_column_head($default){
if ( 'wpt_product_table' == get_post_type() ){
$default['wpt_shortcode'] = "Shortcode";
}
return $default;
}
add_filter('manage_posts_columns', 'wpt_shortcode_column_head');
function wpt_shortcode_column_content($column_name, $post_id){
if ($column_name == 'wpt_shortcode') {
$post_title = get_the_title( $post_id );
$post_title = preg_replace( '/[#$%^&*()+=\-\[\]\';,.\/{}|":<>?~\\\\]/',"$1", $post_title );
echo "<input style='display: inline-block;width:300px;' class='wpt_auto_select_n_copy' type='text' value=\"[Product_Table id='{$post_id}' name='{$post_title}']\" id='wpt_shotcode_content_{$post_id}' readonly>";
echo '<a style="font-size: 12px !important;padding: 4px 13px !important" class="button button-primary wpt_copy_button_metabox" data-target_id="wpt_shotcode_content_' . $post_id . '">'. esc_html__( 'Copy','wpt_pro' ).'</a>';
echo '<p style="color: green;font-weight:bold;display:none; padding-left: 12px;" class="wpt_shotcode_content_' . $post_id . '"></p>';
}
}
add_action('manage_posts_custom_column', 'wpt_shortcode_column_content', 2, 2);
//Permalink Hiding Option
add_filter( 'get_sample_permalink_html', 'wpt_permalink_hiding' );
function wpt_permalink_hiding( $return ) {
if ( 'wpt_product_table' == get_post_type() ){
$return = '';
}
return $return;
}
//Hiding Preview Button from all shortcode page
add_filter( 'page_row_actions', 'wpt_preview_button_hiding', 10, 2 );
add_filter( 'post_row_actions', 'wpt_preview_button_hiding', 10, 2 );
function wpt_preview_button_hiding( $actions, $post ) {
if ( 'wpt_product_table' == get_post_type() ){
unset( $actions['inline hide-if-no-js'] );
unset( $actions['view'] );
}
return $actions;
}
== Changelog ==
5.6
sku issue solved and flatsome theme issue fixed
5.2
Auto Responisve for Mobile, Tab, Desktop
Faster speed
Load More issue fix on new version
taxonomy, Custom field issue fixed
Minicart Load Alert Remove
column remove from tab option added
Drescription column removed and added in Product Title column
Cart meta issue, Duplicate cart item issue fixed
5.1
Admin tab issue fix
other plugin's conflict issue fixed
javascript other cart plugin issue fixed
5.0
Translation issue fixed
Different Configuration available for different table shortcode
Bug Fix
SSL issue fix for style and js file
Individual configurations Bug Fix
Sku,price,custom_metafiled wise ordering fix
And so on...
4.9
Set custom Category/Taxonomy in Search box with custom Order
Post_Include feature added. Able to set specific product in table with custom order Easily.
4.8
Yoast SEO conflict Remove
Custom-field spelling fix
Mini-Filter fixed, Now only show available Taxonomy
Advance Search box option change to select tag and customizeable
4.7
Footer Cart Customization features
4.6
Awesome Footer Cart Added
Per product cart count and will update globally
Cart quantity will display with per [Add to cart] button - for added item
Cart quantity will display with per product - for addedToCartSelected button
Adding spin for loading - add to cart.
Quote Request issue fix,
js issue fixed,
All text - Translateable
'Products not founded' message is changeable from configure
Old shortcode's feature has totally removed
Added and Adding remvoe from basic tab
4.5
product_cat_ids attributes supported in new shortcode.
4.4
Table Design customizer Added
Table's all element is custimzeable
=4.3 (01/29/2019) =
Pagination On/Off feature added
=4.2 (01/24/2019) =
Table head Hiding Mobile's CSS issue Fix
AddToCart's vertical middle issue fixed for Responisve version
MiniCart's None Issue fixed
TempNumber updated - Now anybody can use any post duplicator plugin.
=4.1 (01/22/2019)=
More Ligthweight
Table configuration saved as Table ID
Use Table by Table ID
Edit any table from Table ID
Lessen The Shortcode Length
Enable to Hide Table Header
Add Custom Taxonomy By a Click easily, no need to add in shortcode
Add Custom Field By a Click easily, no need to add in shortcode
No need shortcode editing
Able to change and customize of table's style,colum,content from custom_post type
But Fix
Variation wise LightBox image Display
And So many many feature Update
= 4.0 (01/18/2019)=
Bug Fix
Attribute Display in another column
Variations in different column issue fixed.
Light Updated
Full Size image display in Light Box
Return to default quantity after added to cart
Uncheck automatically after added to cart
= 3.9 (11/28/2018)=
Shortcode Supporting in Custom Field.
Default value issue fixed for Variation of product.
Variations in different column issue fixed.
Now able to add Attributes as Individual Column.
Popup Notice Enable/Disable Feature added.
= 3.8 (11/27/2018)=
Cart Validation Message
Compatible with all Min Max Plugin
Removed default quantity from configuration page
Code Optimized for better performance and speed.
Load More button show/hide option
= 3.7 (11/21/2018)=
Advance search box's added default search order and order_by based on shortcode
date and modied_date collumn added at Table
Configure Page's design changed - So smart/so cool
"On Back Order" available now in Table
Mini cart update
Advance Cart Update
send 'add_to_cart','added_to_cart' event
= 3.6 (10/29/2018)=
Configuration's value Reset option fix when plugin update
Filter Text change option of Filter
Reset Button Text change option of Filter
Thumbs image size issue fix
Mini-cart Update automatically
Fix Responsive Issue for TD's height
Fix Responsive Issue for TD's width
product_description issue fixed
= 3.5 (10/17/2018)=
Bug Fix for CSS add to cart button in shop page
Bug fix for Instant search's result all check
Hide Load_More Button when all "unlimited product"
Load More button's bug fix, when click Search of "Advance Search"
= 3.4 (10/11/2018)=
Table design is updated based on new Design Trend.
Product Table Sort by SKU and also able to sort by any type Custom Meta value
Suppose you will able to sort by Custom Field Value
Able to sort by Custom Taxonomy
Front-End sorting will work properly based on Price
New Table template added named "Beautiful Blacky"
Documentation Updated based on new feature
New and Modern design for Documentation
Design is Updated for Our plugin's Dashboard part
= 3.3 =
Search Box's Spelling fix.
Search Box's all text are changeable from Configure Page.
[Type your Message] Placeholder is changeable from configure page
Variations issue solved for any type variations.
Table Stock column's "In Stock" and "Out of Stock" is now change able from configure page.
Mini Cart's "Cart","View Cart" and "Checkout" Text also change able from configure page
Bug fix
= 3.2 =
Categories, tags unlink bug fix, when click Search Button
Ajax Action Bug fix, when Search and Load button clicked
Custom Icon for Add to cart button. Such: Only Icon, No icon, with left icon, with right icon
= 3.1 =
YITH Quick View supported.
Product displaying from publish, added post_status => 'publish'
Added Custom Message at Configure page for "There is no product based on current Query."
Setting product_single page link for external and grouped product
Bug Fix for URL of variations product when "no_ajax_action"
Link remove for Categories and Tags from Configure page
[Quick Buy] Feature Added for Each Product. See in configure page "Enable Quick Buy Button" and set it as Yes to Activate.
Image/Thumbs lighBox Enable Disable Features Added
Mobile Responsive issue fix of "smart thin" table Template
Instance Search Issue Fixed. Now "Instance Search" is case insensitive.
Search Box's item sorting. Able to control from Configure page.
= 3.0 =
Search Button's Bug Fix
Instance Search's Bug fix
Live column Sorting ascending/descending
Cart Removing Feature at Mini-Cart
Able to change "Items/Item" text from configure
Able to customize message from configure
Front-end Live search also with Menu Order
Able to remove Ajax Action
External/Affiliate product's Issue Fix
All Message customize able.
New Table Template [Smart Thin] - like Excel
Add to cart selected, Direct checkout page
= UPTO VERSION: 2.9 =
Sorting by WC Order menu
Unlimited variations Supported
Compatible with YITH Request Quote Pluginn (Free + Premium)
Compatible with YITH Wishlist Plugin
Advance Instant Search
Advance Ajax Search and Filter
Ajax cart, Widget cart, cart count Update
Custom Message set at Order,
Custom Filed for Table Column
Custom Taxonomy for table colum,
Search by Custom Texonomy, Category, Tag, keyword, Order
Ajax Page load for pagination,
Live cart option at top/bottom and auto Update
Shortcode Generator from Dashboard Updated
100% Mobile Friendly
Customize Default Features
= 2.8 =
Column is Sortable by click on column name
[Product Table] menu at top of [WooCommerce] menu
Any size Thumbnail accepting
https://codeastrology.net/woo-product-table-pro/doc/#changelog
Working on admin/style_js_adding_admin.php file
/**
* Alpha Color Picker CSS
*/
.alpha-color-picker-wrap .wp-picker-container .iris-picker {
border-bottom: none;
}
.alpha-color-picker-wrap .wp-picker-input-wrap {
display: block;
}
.alpha-color-picker-wrap .wp-picker-container input[type=text].wp-color-picker {
width: 195px;
}
.wp-picker-container .wp-picker-open ~ .wp-picker-holder .alpha-color-picker-container {
display: block;
}
.alpha-color-picker-container {
border: 1px solid #dfdfdf;
border-top: none;
display: none;
background: #FFF;
padding: 0 11px 10px;
position: relative;
}
.alpha-color-picker-container .ui-widget-content,
.alpha-color-picker-container .ui-widget-header,
.alpha-color-picker-wrap .ui-state-focus {
background: transparent;
border: none;
}
.alpha-color-picker-wrap a.iris-square-value:focus {
-webkit-box-shadow: none;
box-shadow: none;
}
.alpha-color-picker-container .ui-slider {
position: relative;
z-index: 1;
height: 24px;
text-align: center;
margin: 0 auto;
width: 88%;
width: calc( 100% - 28px );
}
.alpha-color-picker-container .ui-slider-handle,
.alpha-color-picker-container .ui-widget-content .ui-state-default {
color: #777;
background: #FFF;
text-shadow: 0 1px 0 #FFF;
text-decoration: none;
position: absolute;
z-index: 2;
box-shadow: 0 1px 2px rgba(0,0,0,0.2);
border: 1px solid #aaa;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
margin-top: -2px;
top: 0;
height: 26px;
width: 26px;
cursor: ew-resize;
font-size: 0;
padding: 0;
line-height: 27px;
margin-left: -14px;
}
.alpha-color-picker-container .ui-slider-handle.show-opacity {
font-size: 12px;
}
.alpha-color-picker-container .click-zone {
width: 14px;
height: 24px;
display: block;
position: absolute;
left: 10px;
}
.alpha-color-picker-container .max-click-zone {
right: 10px;
left: auto;
}
.alpha-color-picker-container .transparency {
height: 24px;
width: 100%;
background-color: #FFF;
background-image: url(../images/transparency-grid.png);
box-shadow: 0 0 5px rgba(0,0,0,0.4) inset;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
padding: 0;
margin-top: -24px;
}
@media (max-width: 782px) {
.alpha-color-picker-wrap .wp-picker-container input[type=text].wp-color-picker {
width: 173px;
}
}
\ No newline at end of file
/*
All Template in One File
Inluded Template List:
Default Template - default
Green Template - green
Blue Template - blue
*/
/********************** Template: custom ************************************/
.custom_table{
position: relative;
border-collapse: collapse;
width: 100%;
margin: 0 auto;
position: relative;
}
.custom_table thead .wpt_table_header_row th{
padding: 17px;
color: #fff;
background: #0a7f9c;
}
.custom_table td,
.custom_table th {
padding: 10px;
}
.custom_table tbody tr td{
border: 1px solid #F6F6F6;
}
.custom_table .wpt_row td img{
height: auto;
margin: 0 auto;
}
.custom_table tbody tr{
transition: all .5s;
}
.custom_table tbody tr a.button,
.custom_table tbody tr a.button.adding,
.custom_table tbody tr a.button.alt.wc-variation-selection-needed,
.custom_table tbody tr a.button.adding.wc-variation-selection-needed,
.custom_table tbody tr a.button.disabled,.custom_table tbody tr a.button.alt.disabled{
padding: 8px 9px;
background: #ff7f57;
color: #fff;
font-size: 13px;
border-radius: 5px;
font-weight: bold;
margin: 2px auto;
}
table.custom_table tbody td a.wpt_product_title_in_td,
table.custom_table tbody td span.wpt_product_title_in_td,
table.custom_table tbody td a
{
color: #021d33;
font-weight: bold;
}
@media only screen and (min-width: 761px) {
table.custom_table>tbody>tr:nth-child(2n+2)>td{
background: #f5f5f5;
background-color: #f5f5f5;
}
}
@media only screen and (min-width: 992px) {
div.wpt_for_product_desc,div.wpt_for_product_action,div.wpt_for_thumbs_desc.wpt_thumbnails,div.wpt_custom_cf_tax{display: none !important;}
}
table.custom_table tbody tr:nth-child(2n+2) td input{
background: #fff;
}
@media only screen and (min-width: 1170px) {
table.custom_table tbody td.wpt_product_title {
max-width: 450px;
}
}
/*for hover of default template*/
table#wpt_table.wpt_product_table.custom_table thead>tr>th.this_column_sorted {
background-color: #0a7f9c;
}
table#wpt_table.custom_table tr>td.this_column_sorted{
background: #f5f5f5;
}
/*Customization for Quantity Collum*/
table.wpt_product_table.business_table thead th.quantity {
}
/*Customize Action collumn*/
.wpt_product_table thead th.action{
}
table.wpt_product_table.business_table thead th.action,
table.wpt_product_table.business_table tbody tr td.wpt_action{
/* background: rgba(116, 175, 153, 0.04); */
}
/*Customize for Quantity Collumn*/
table.wpt_product_table.business_table td.wpt_quantity {
padding: 0 !important;
}
table.wpt_product_table.business_table tbody tr td.wpt_quantity>div.quantity input[type='number']{
color: #000000;
padding: 6px;
width: 100%;
border: 1px solid rgba(0, 0, 0, 0);
background: rgb(255, 255, 255);
font-weight: bold;
}
/*Add to Cart Button Style*/
table.wpt_product_table.business_table span.wpt_product_price>a.button.add_to_cart_button {
background: rgb(183, 183, 183);
display: inline-block;
padding: 1px 8px;
border-radius: 2px;
border: 1px solid #989898;
color: #ffffff;
font-weight: normal;
}
table.wpt_product_table.business_table tr:hover span.wpt_product_price>a.button.add_to_cart_button {
background: rgba(255, 255, 255, 0.54);
border: 1px solid #c5c5c5;
color: #000000;
}
table.wpt_product_table.business_table span.wpt_product_price>a.button.add_to_cart_button.added {
background: rgb(230, 230, 230);
display: inline-block;
padding: 2px 3px;
border-radius: 3px;
border: 1px solid #d8d8d8;
color: #c5c5c5;
}
/*Masic class Style. for colunm on Mouse Over. Manage by jQuery*/
div.wpt_product_table_wrapper.business_wrapper table.wpt_product_table.business_table tbody tr td.wpt_masic_column{
background: rgb(255, 255, 255);
/* rgba(154, 154, 154, 0.02) */
}
/*Business Templatte New Style for Border */
div#wpt_table_wrapper.business_wrapper {
border-radius: 17px;
overflow: hidden;
background: rgb(245, 245, 245);
border: 1px solid rgba(97, 97, 97, 0.5);
}
/*Business Template New Style for Table Head*/
div#wpt_table_wrapper.wpt_product_table_wrapper.business_wrapper table#wpt_table.wpt_product_table.business_table thead tr.wpt_table_header_row.wpt_table_head th {
color: black;
}
/* for shop Icon*/
/*For Shop Icon*/
table.add_cart_only_icon tr td.wpt_action a.button:before {
/*content: "";*/
content: "\e01d";
z-index: 99999;
margin: 11px;
font-family: WooCommerce;
font-size: initial;
padding: 0 9px;
}
table.add_cart_only_icon tr td.wpt_action a.button{
font-size: 0 !important;
}
table.add_cart_only_icon tr td.wpt_action a.button.added:before{
font-style: italic;
font-stretch: semi-expanded;
}
table.add_cart_left_icon tr td.wpt_action a.button:before {
/*content: "";*/
content: "\e01d";
z-index: 99999;
font-family: WooCommerce;
font-size: initial;
padding: 0;
position: static;
font-size: 76%;
margin-right: 5px;
}
table.add_cart_right_icon tr td.wpt_action a.button:after {
/*content: "";*/
content: "\e01d";
z-index: 99999;
font-family: WooCommerce;
font-size: initial;
padding: 0;
position: static;
font-size: 76%;
margin-left: 5px;
}
/* added icon list: https://github.com/woocommerce/woocommerce-icons/blob/master/style.css */
.woocommerce a.button.wpt_woo_add_cart_button.added::after{
content: '';
display: none !important;
}
/* responsive */
@media only screen and (max-width: 767px) {
td.wpt_product_title {
padding-bottom: 1px;
}
td.wpt_action {
padding-top: 1px;
}
}
\ No newline at end of file
<?php
/**
* Default messeage showing, When not found WooCommerce
*/
function wpt_if_no_woocommerce(){
echo '<a title="' . esc_attr__( 'Tell us: if need Help', 'wpt_pro' ) . '" href="mailto:codersaiful@gmail.com" style="color: #d00;padding: 10px;">' . esc_html__( '[WOO Product Table] WooCommerce not Active/Installed', 'wpt_pro' ) . '</a>';
}
add_shortcode( 'Product_Table', 'wpt_if_no_woocommerce' );
\ No newline at end of file
<?php
/**
* CSS or Style file add for FrontEnd Section.
*
* @since 1.0.0
*/
function wpt_style_js_adding(){
//Custom CSS Style for Woo Product Table's Table (Universal-for all table) and (template-for defien-table)
wp_enqueue_style( 'wpt-universal', WOO_Product_Table::getPath('BASE_URL') . 'css/universal.css', array(), WOO_Product_Table::getVersion(), 'all' );
wp_enqueue_style( 'wpt-template-table', WOO_Product_Table::getPath('BASE_URL') . 'css/template.css', array(), WOO_Product_Table::getVersion(), 'all' );
//jQuery file including. jQuery is a already registerd to WordPress
wp_enqueue_script( 'jquery' );
///custom JavaScript for Woo Product Table pro plugin
wp_enqueue_script( 'wpt-custom-js', WOO_Product_Table::getPath('BASE_URL') . 'js/custom.js', array( 'jquery' ), WOO_Product_Table::getVersion(), true );
/**
* Select2 CSS file including.
*
* @since 1.0.3
*/
wp_enqueue_style( 'select2', WOO_Product_Table::getPath('BASE_URL') . 'css/select2.min.css', array( 'jquery' ), '1.8.2' );
/**
* Select2 jQuery Plugin file including.
* Here added min version. But also available regular version in same directory
*
* @since 1.9
*/
wp_enqueue_script( 'select2', WOO_Product_Table::getPath('BASE_URL') . 'js/select2.min.js', array( 'jquery' ), '4.0.5', true );
}
add_action( 'wp_enqueue_scripts', 'wpt_style_js_adding', 99 );
<?php
/**
* Nothing to say
* Invisibale Restricted Access
*/
?>
<!-- Silence is better than nothing -->
\ No newline at end of file
(function($) {
'use strict';
$(document).ready(function() {
if(! $('body').hasClass('post-type-wpt_product_table')){
return false;
}
//For select, used select2 addons of jquery
//$('.wpt_wrap select,.wpt_shortcode_gen_panel select, select#wpt_product_ids,select#product_tag_ids').select2();
function wptSelectItem(target, id) { // refactored this a bit, don't pay attention to this being a function
var option = $(target).children('[value='+id+']');
option.detach();
$(target).append(option).change();
}
$('select#wpt_product_ids,select#product_tag_ids,select.wpt_select2').select2();
$('select#wpt_product_ids,select#product_tag_ids,select.wpt_select2').on('select2:select', function(e){
wptSelectItem(e.target, e.params.data.id);
});
//code for Sortable
$( "#wpt_column_sortable" ).sortable({handle:'.handle'});
$( "#wpt_column_sortable" ).disableSelection();
$('.wpt_auto_select_n_copy').toggle(function() {
$(this).select();
},
function() {
//$(this).unselect();
}
);
$('.wpt_copy_button_metabox').click(function(){
var ID_SELECTOR = $(this).data('target_id');
copyMySelectedITem(ID_SELECTOR);
});
//wpt_metabox_copy_content
function copyMySelectedITem(ID_SELECTOR) {
var copyText = document.getElementById(ID_SELECTOR);
copyText.select();
document.execCommand("copy");
$('.' + ID_SELECTOR).html("Copied");
$('.' + ID_SELECTOR).fadeIn();
var myInterVal = setInterval(function(){
$('.' + ID_SELECTOR).html("");
$('.' + ID_SELECTOR).fadeOut();
clearInterval(myInterVal);
},1000);
}
/**************Admin Panel's Setting Tab Start Here For Tab****************/
var selectLinkTabSelector = "body.post-type-wpt_product_table #wpt_configuration_form a.wpt_nav_tab";
var selectTabContentSelector = "body.post-type-wpt_product_table #wpt_configuration_form .wpt_tab_content";
var selectLinkTab = $(selectLinkTabSelector);
var selectTabContent = $(selectTabContentSelector);
var tabName = window.location.hash.substr(1);
if (tabName) {
removingActiveClass();
$('body.post-type-wpt_product_table #wpt_configuration_form #' + tabName).addClass('tab-content-active');
$('body.post-type-wpt_product_table #wpt_configuration_form .nav-tab-wrapper a.wpt_nav_tab.wpt_nav_for_' + tabName).addClass('nav-tab-active');
console.log(tabName);
}
$('body.post-type-wpt_product_table').on('click',' #wpt_configuration_form a.wpt_nav_tab',function(e){
var targetTabContent = $(this).data('tab');//getting data value from data-tab attribute
window.location.hash = targetTabContent; //Set hash keywork in Address Bar
removingActiveClass();
$(this).addClass('nav-tab-active');
$('body.post-type-wpt_product_table #wpt_configuration_form #' + targetTabContent).addClass('tab-content-active');
e.preventDefault(); //Than prevent for click action of hash keyword
});
/**
* Removing current active nav_tab and tab_content element
*
* @returns {nothing}
*/
function removingActiveClass() {
selectLinkTab.removeClass('nav-tab-active');
selectTabContent.removeClass('tab-content-active');
return false;
}
/**************Admin Panel's Setting Tab End Here****************/
/*********Columns , meta sorting orders and mobile checkbox controlling start here************/
/**
* If chose Custom Meta value than
* Custom meta value's input field will be visible
* Otherise, By default, It stay hidden
*/
$('body.post-type-wpt_product_table').on('change','#wpt_table_sort_order_by',function(){
var current_val = $(this).val();
if(current_val === 'meta_value' || current_val === 'meta_value_num'){
$("#wpt_meta_value_wrapper").fadeIn();
//$("#wpt_product_meta_value_sort").val('_sku');
}else{
$("#wpt_meta_value_wrapper").fadeOut();
//$("#wpt_product_meta_value_sort").val('');
}
});
var wpt_table_sort_order_by = $('#wpt_table_sort_order_by').val();
if(wpt_table_sort_order_by === 'meta_value' || wpt_table_sort_order_by === 'meta_value_num'){
$("#wpt_meta_value_wrapper").fadeIn();
}
/**
* Column Section Managing
*/
$('body.post-type-wpt_product_table').on('click','#wpt_column_sortable li.wpt_sortable_peritem input.checkbox_handle_input',function(){
var keyword = $(this).data('column_keyword');
var targetLiSelector = $('#wpt_column_sortable li.wpt_sortable_peritem.column_keyword_' + keyword);
if ($(this).prop('checked')) {
$(this).addClass('enabled');
targetLiSelector.addClass('enabled');
} else {
//Counting Column//
var column_keyword;
column_keyword = [];
$('#wpt_column_sortable li.wpt_sortable_peritem.enabled .wpt_shortable_data input.colum_data_input').each(function(Index) {
column_keyword[Index] = $(this).data('keyword');
});
if (column_keyword.length < 2) {
alert('Minimum 1 column is required!');
return false;
}
//Counting colum End here
$(this).removeClass('enabled');
targetLiSelector.removeClass('enabled');
}
});
/**
* For Hide on Mobile
*
* @param {type} param
*/
$('body.post-type-wpt_product_table').on('click','#wpt_keyword_hide_mobile li.hide_on_mobile_permits input.checkbox_handle_input',function(){
var keyword = $(this).data('column_keyword');
var targetLiSelector = $('#wpt_keyword_hide_mobile li.hide_on_mobile_permits.column_keyword_' + keyword);
if ($(this).prop('checked')) {
$(this).addClass('enabled');
targetLiSelector.addClass('enabled');
} else {
$(this).removeClass('enabled');
targetLiSelector.removeClass('enabled');
}
});
/*********Columns , meta sorting orders and mobile checkbox controlling end here************/
//Adding Texonomy or Custom Field Button
$('body.post-type-wpt_product_table').on('click','#tax_cf_adding_button',function(){
var taxt_cf_type,taxt_cf_input,taxt_cf_title,keyword,html;
taxt_cf_type = $('.taxt_cf_type').val();
taxt_cf_input = $('.taxt_cf_input').val();
taxt_cf_title = $('.taxt_cf_title').val();
if(taxt_cf_input === '' || taxt_cf_title === ''){
alert("Keyword or Column Name can't be empty");
return false;
}
keyword = taxt_cf_type + taxt_cf_input;
console.log(taxt_cf_input);
html = '<li class="wpt_sortable_peritem column_keyword_' + keyword + ' enabled">';
html += '<span title="Move Handle" class="handle ui-sortable-handle"></span>';
html += '<div class="wpt_shortable_data">';
html += '<input name="column_array[' + keyword + ']" data-column_title="' + taxt_cf_title + '" data-keyword="' + keyword + '" class="colum_data_input product_id" type="text" value="' + taxt_cf_title + '">';
html += "<span class='wpt_column_cross'>X</span>";
html += '</div>';
html += '<span title="Move Handle" class="handle checkbox_handle ui-sortable-handle">';
html += '<input name="enabled_column_array[' + keyword + ']" value="' + taxt_cf_title + '" title="Active Inactive Column" class="checkbox_handle_input enabled" type="checkbox" data-column_keyword="' + keyword + '" checked="checked">';
html += '</span>';
html += '</li>';
$('#wpt_column_sortable').append(html);
});
//Design Style part JS
$('.wpt_color_picker').wpColorPicker();
$('body.post-type-wpt_product_table').on('change','select#wpt_style_file_selection',function(){
var template = $(this).val();
var elementWrapper = $('div.wpt_customized_style_box_wrapper');
if('custom' === template){
elementWrapper.fadeIn('medium');
}else{
elementWrapper.fadeOut('medium');
}
});
$('select#wpt_style_file_selection,select#wpt_table_mobile_responsive').trigger('change');
//span.wpt_column_cross
$('body.post-type-wpt_product_table').on('click','span.wpt_column_cross',function(){
$(this).parents('.wpt_sortable_peritem').fadeOut().remove();
});
});
})(jQuery);
\ No newline at end of file
/**
* Alpha Color Picker JS
*/
( function( $ ) {
/**
* Override the stock color.js toString() method to add support for
* outputting RGBa or Hex.
*/
Color.prototype.toString = function( flag ) {
// If our no-alpha flag has been passed in, output RGBa value with 100% opacity.
// This is used to set the background color on the opacity slider during color changes.
if ( 'no-alpha' == flag ) {
return this.toCSS( 'rgba', '1' ).replace( /\s+/g, '' );
}
// If we have a proper opacity value, output RGBa.
if ( 1 > this._alpha ) {
return this.toCSS( 'rgba', this._alpha ).replace( /\s+/g, '' );
}
// Proceed with stock color.js hex output.
var hex = parseInt( this._color, 10 ).toString( 16 );
if ( this.error ) { return ''; }
if ( hex.length < 6 ) {
for ( var i = 6 - hex.length - 1; i >= 0; i-- ) {
hex = '0' + hex;
}
}
return '#' + hex;
};
/**
* Given an RGBa, RGB, or hex color value, return the alpha channel value.
*/
function acp_get_alpha_value_from_color( value ) {
var alphaVal;
// Remove all spaces from the passed in value to help our RGBa regex.
value = value.replace( / /g, '' );
if ( value.match( /rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/ ) ) {
alphaVal = parseFloat( value.match( /rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/ )[1] ).toFixed(2) * 100;
alphaVal = parseInt( alphaVal );
} else {
alphaVal = 100;
}
return alphaVal;
}
/**
* Force update the alpha value of the color picker object and maybe the alpha slider.
*/
function acp_update_alpha_value_on_color_input( alpha, $input, $alphaSlider, update_slider ) {
var iris, colorPicker, color;
iris = $input.data( 'a8cIris' );
colorPicker = $input.data( 'wpWpColorPicker' );
// Set the alpha value on the Iris object.
iris._color._alpha = alpha;
// Store the new color value.
color = iris._color.toString();
// Set the value of the input.
$input.val( color );
// Update the background color of the color picker.
colorPicker.toggler.css({
'background-color': color
});
// Maybe update the alpha slider itself.
if ( update_slider ) {
acp_update_alpha_value_on_alpha_slider( alpha, $alphaSlider );
}
// Update the color value of the color picker object.
$input.wpColorPicker( 'color', color );
}
/**
* Update the slider handle position and label.
*/
function acp_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ) {
$alphaSlider.slider( 'value', alpha );
$alphaSlider.find( '.ui-slider-handle' ).text( alpha.toString() );
}
$.fn.alphaColorPicker = function() {
return this.each( function() {
// Scope the vars.
var $input, startingColor, paletteInput, showOpacity, defaultColor, palette,
colorPickerOptions, $container, $alphaSlider, alphaVal, sliderOptions;
// Store the input.
$input = $( this );
// We must wrap the input now in order to get our a top level class
// around the HTML added by wpColorPicker().
$input.wrap( '<div class="alpha-color-picker-wrap"></div>' );
// Get some data off the input.
paletteInput = $input.attr( 'data-palette' ) || 'true';
showOpacity = $input.attr( 'data-show-opacity' ) || 'true';
defaultColor = $input.attr( 'data-default-color' ) || '';
// Process the palette.
if ( paletteInput.indexOf( '|' ) !== -1 ) {
palette = paletteInput.split( '|' );
} else if ( 'false' == paletteInput ) {
palette = false;
} else {
palette = true;
}
// Get a clean starting value for the option.
startingColor = $input.val().replace( /\s+/g, '' );
// If we don't yet have a value, use the default color.
if ( '' == startingColor ) {
startingColor = defaultColor;
}
// Set up the options that we'll pass to wpColorPicker().
colorPickerOptions = {
change: function( event, ui ) {
var key, value, alpha, $transparency;
key = $input.attr( 'data-customize-setting-link' );
value = $input.wpColorPicker( 'color' );
// Set the opacity value on the slider handle when the default color button is clicked.
if ( defaultColor == value ) {
alpha = acp_get_alpha_value_from_color( value );
$alphaSlider.find( '.ui-slider-handle' ).text( alpha );
}
// If we're in the Customizer, send an ajax request to wp.customize
// to trigger the Save action.
if ( typeof wp.customize != 'undefined' ) {
wp.customize( key, function( obj ) {
obj.set( value );
});
}
$transparency = $container.find( '.transparency' );
// Always show the background color of the opacity slider at 100% opacity.
$transparency.css( 'background-color', ui.color.toString( 'no-alpha' ) );
},
palettes: palette // Use the passed in palette.
};
// Create the colorpicker.
$input.wpColorPicker( colorPickerOptions );
$container = $input.parents( '.wp-picker-container:first' );
// Insert our opacity slider.
$( '<div class="alpha-color-picker-container">' +
'<div class="min-click-zone click-zone"></div>' +
'<div class="max-click-zone click-zone"></div>' +
'<div class="alpha-slider"></div>' +
'<div class="transparency"></div>' +
'</div>' ).appendTo( $container.find( '.wp-picker-holder' ) );
$alphaSlider = $container.find( '.alpha-slider' );
// If starting value is in format RGBa, grab the alpha channel.
alphaVal = acp_get_alpha_value_from_color( startingColor );
// Set up jQuery UI slider() options.
sliderOptions = {
create: function( event, ui ) {
var value = $( this ).slider( 'value' );
// Set up initial values.
$( this ).find( '.ui-slider-handle' ).text( value );
$( this ).siblings( '.transparency ').css( 'background-color', startingColor );
},
value: alphaVal,
range: 'max',
step: 1,
min: 0,
max: 100,
animate: 300
};
// Initialize jQuery UI slider with our options.
$alphaSlider.slider( sliderOptions );
// Maybe show the opacity on the handle.
if ( 'true' == showOpacity ) {
$alphaSlider.find( '.ui-slider-handle' ).addClass( 'show-opacity' );
}
// Bind event handlers for the click zones.
$container.find( '.min-click-zone' ).on( 'click', function() {
acp_update_alpha_value_on_color_input( 0, $input, $alphaSlider, true );
});
$container.find( '.max-click-zone' ).on( 'click', function() {
acp_update_alpha_value_on_color_input( 100, $input, $alphaSlider, true );
});
// Bind event handler for clicking on a palette color.
$container.find( '.iris-palette' ).on( 'click', function() {
var color, alpha;
color = $( this ).css( 'background-color' );
alpha = acp_get_alpha_value_from_color( color );
acp_update_alpha_value_on_alpha_slider( alpha, $alphaSlider );
// Sometimes Iris doesn't set a perfect background-color on the palette,
// for example rgba(20, 80, 100, 0.3) becomes rgba(20, 80, 100, 0.298039).
// To compensante for this we round the opacity value on RGBa colors here
// and save it a second time to the color picker object.
if ( alpha != 100 ) {
color = color.replace( /[^,]+(?=\))/, ( alpha / 100 ).toFixed( 2 ) );
}
$input.wpColorPicker( 'color', color );
});
// Bind event handler for clicking on the 'Default' button.
$container.find( '.button.wp-picker-default' ).on( 'click', function() {
var alpha = acp_get_alpha_value_from_color( defaultColor );
acp_update_alpha_value_on_alpha_slider( alpha, $alphaSlider );
});
// Bind event handler for typing or pasting into the input.
$input.on( 'input', function() {
var value = $( this ).val();
var alpha = acp_get_alpha_value_from_color( value );
acp_update_alpha_value_on_alpha_slider( alpha, $alphaSlider );
});
// Update all the things when the slider is interacted with.
$alphaSlider.slider().on( 'slide', function( event, ui ) {
var alpha = parseFloat( ui.value ) / 100.0;
acp_update_alpha_value_on_color_input( alpha, $input, $alphaSlider, false );
// Change value shown on slider handle.
$( this ).find( '.ui-slider-handle' ).text( ui.value );
});
});
}
}( jQuery ));
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
=== Woo Product Table - Free WooCommerce Table view solution ===
Contributors: codersaiful,codeastrology
Donate link: https://codecanyon.net/item/woo-product-table-pro/20676867
Tags: wc product table,woocommerce product table, product table, wc table, quick order table, wholesale table, restaurants table
Requires at least: 4.0.0
Tested up to: 5.2.4
Requires PHP: 5.6
Stable tag: 4.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Product Table's pro Features in FREE. Easily display your products as table by tiny shortcode. Such: [Product_Table id='1']. Support default editor, any Page Builder & Gutenberg.
== Description ==
Auto Responsive Mobile & Tab, Nice Design, Fast Speed *WooCommerce Product Table*. Tiny Shortcode, Easy customizable, Ajax Add to cart, Ajax Search, Pagination & Load More.
*Woo Product Table - Free WooCommerce Table view solution* offers to show all products display as a table in page by light shortcode. Fully responsive and mobile friendly. Easily customizable - color,background,title,text color etc.
**[$10 Discount for Limited Time](https://codecanyon.net/item/woo-product-table-pro/20676867)**
**Demo List**
* [Custom Design Table](https://wcproducttable.xyz/all/) Here is table with custom design. You can customize your table with your design like color,background-color,font-size,padding,spacing etc from the option panel.
* [Online Music Sell](https://wcproducttable.xyz/online-music-sell/) This table is made for a Music site. Music preview available.
* [Restaurant Table](https://wcproducttable.xyz/restaurant/) This table is made for a restaurant. User will easily order products from table.
* [Jewellery Product Table](https://wcproducttable.xyz/jewelry-products-table/) With this table you can show your jewellery products.
* [Books Table](https://wcproducttable.xyz/books-table/) Sell your books with the help of table and increase user engagement.
* [Accessories Table](https://wcproducttable.xyz/mobile-wholesale/) It's a demo of accessories table like mobile phones with different options.
* [Fashion Table](https://wcproducttable.xyz/fashion/) Simple Example of Fashion Table.
* [Pricing Table](https://wcproducttable.xyz/pricing-table/) You can also make your pricing table with Instant search and filter.
* [Table With Custom Fields](https://wcproducttable.xyz/mobile-wholesale/) This table showing many custom fields for products.You can re-arrange the custom field column from the option panel.
* More demo coming soon....
**WooCommerce Product Table** plugin offers to display your shop products in one page by shortcode as table.
* Shop page as Table
* Available add to cart in Table
* Ajax add to cart
* Advanced SearchBox to search from all products
* Well adaptable with your theme design
* Easy customization from Dashboard
* YITH WishList Support in table
* Has Option to Hide Table Header
* All text of your table are editable now.
Add the shortcode to any existing post or page:
`[Product_Table ID='123' name='Table Name']`
*ID* - will be post's ID(required).It will generate automatically when you create your table.
*name* - only for identifying your table's shortcode.(Optional)
**[See Demo](https://wcproducttable.xyz/) || [See Features](https://codeastrology.com/wordpress-plugins/woo-product-table-free/) || [Pro Features](https://codeastrology.com/wordpress-plugins/woo-product-table/) || [See Pro](https://codecanyon.net/item/woo-product-table-pro/20676867)**
This plugin will help any body to show All product in 1 page as Table. Also able to change/customize. Go to: Dashboard->WPT Table . If anybody found any issue, Please inform me to codersaiful@gmail.com.
**Have a looks in short**
https://www.youtube.com/watch?v=ZloiY3NRmW8
**Pro Version's Features**
*All custom field and taxonomy plugin supported
* More Light Weight
* Table configuration saved as Table ID
* Use Table by Table ID
* Add Custom Taxonomy By a Click easily, no need to add in shortcode
* Add Custom Field By a Click easily, no need to add in shortcode
* YITH quick view
* WooCommerce Product Addon supported
* No need shortcode editing
* Able to change and customize of table's style,column,content from custom_post type
* Variation wise LightBox image Display
* And So many many feature Update
**IN DETAILS**
https://www.youtube.com/watch?v=D67b_0tQ-z8
== Installation ==
1. Upload the plugin files to the `/wp-content/plugins/woo-product-table` directory, or install the plugin through the WordPress plugins screen directly.
2. Activate the plugin through the 'Plugins' screen in WordPress
3. Use the Woo Table->Setting screen to configure the plugin's default setting.
== Frequently Asked Questions ==
= Why Woo Product Table? =
To see your all products as a table in a page by shortcode.User friendly interface with easy options.If you want to increase user engagement in your site then it's the best solution.
= What is default Shortcode? =
Default Shortcode is [Product_Table id='123' name='Home Table'] as well as also able to change. Go to Product Table page from dashboard.
= Can I set product limitation to show in one table? =
Yes. You can set the product limit to show in yout able. Eg. You have 100 products in your site then you can easily show 50 of them.
= How to use? =
Install and activate. Then go to ( Dashboard -> Product Table-> Add New ). Give a suitable name of your table. Configure your table according to your need and click publish. Finally, copy the shortcode and paste it to your desired page or post.
That's it. So easy, Right !!!
= How to show specific Category products ? =
You can easily show specific category products. While creating new table click on the basic tab. You will find an option to select your category. You can also choose multiple categories.
= Is it suitable for any theme ? =
Yes. *WooCommerce Product Table* will adapt with your theme design.
== Screenshots ==
`/assets/screenshot-1.png`
`/assets/screenshot-2.png`
`/assets/screenshot-3.png`
`/assets/screenshot-4.png`
`/assets/screenshot-5.png`
== Changelog ==
= 2.0 =
* Auto Responsive for Mobile
* Auto Responsive for Tab
* More Clean Design
* Bug Fix
= 1.9 =
* Fixed - javascript conflict issue of other cart plugin
* custom field supported
* custom taxonomy supported
* Undefine index issue fixed for free version
* Pagination is free now
* Column Move added in Free
= 1.8 =
* YITH Quick View Added at Free
* Attribute Collumn Added at Free
= 1.7 =
* Many pro feature in free now.
* Translation issue fixed
* Different Configuration available for different table shortcode
* Bug Fix
* SSL issue fix for style and js file
= 1.6 =
* Bug Fix
* Supported with latest WooCommerce
* Supported with latest WordPress
= 1.6 =
* Removed old Shortcode
* Awesome Footer Cart Added
* Per product cart count and will update globally
* Cart quantity will display with per [Add to cart] button - for added item
* YITH Quote request Supported
* YITH Wishlist Supported
* YITH Quick View Supported
* Adding spin for loading - add to cart.
* Quote Request issue fix,
* js issue fixed,
* All text - Translateable
* Old shortcode's feature has totally removed
* Added and Adding text removed from basic tab
= 1.5 =
* Easy shortcode System
* Table Manage by only one ID.
* Bug Fix
= 1.4 =
* Bug Fix
* Mobile Responsive
* Configure Page
* Column Move
* Ajax Add to cart
* So many pro feature in Free Version
= 1.3 =
* Shortcode Supporting in Custom Field.
* Default value issue fixed for Variation of product.
* Variations/Attribute in different column issue fixed.
* Now able to add Attributes as Individual Column.
* Popup Notice Enable/Disable Feature added.
* Cart Validation Message
* Compatible with all Min Max Plugin
* Removed default quantity from configuration page
* Code Optimized for better performance and speed.
* Load More button show/hide option
* Speed fast
* Advance search box's added default search order and order_by based on shortcode
* date and modied_date collumn added at Table
* Configure Page's design changed - So smart/so cool
* "On Back Order" available now in Table
* Mini cart update
* Advance Cart Update
* send 'add_to_cart','added_to_cart' event
* Configuration's value Reset option fix when plugin update
* Filter Text change option of Filter
* Reset Button Text change option of Filter
* Thumbs image size issue fix
* Mini-cart Update automatically
* Fix Responsive Issue for TD's height
* Fix Responsive Issue for TD's width
= 1.2 =
* Bug Fix
* Stable with latest WooCommerce
* Stable with latest WordPress
* Ajax Add to cart
* Template for Table
* Quantity Bug fix
= 1.1 =
* Fix issue for no_woocommerce_fact.
= 1.0 =
* Just Start First version.
\ No newline at end of file
......@@ -64,6 +64,7 @@ header#masthead{
#lienket{
height: 50px;
margin-top: 15px;
margin-bottom: 15px;
}
#lienket .btn{
cursor: pointer;
......
......@@ -54,7 +54,9 @@
/* Tính năng */
.info { padding: 5px; }
.rtsw-testimonial-inner{
opacity: 1;
}
}
......@@ -112,6 +114,9 @@
/* Tính năng */
.info { padding: 5px; }
.rtsw-testimonial-inner{
opacity: 1;
}
}
/* <=768 px */
......@@ -168,6 +173,9 @@
/* Tính năng */
.info { padding: 5px; }
.rtsw-testimonial-inner{
opacity: 1;
}
}
......
......@@ -129,7 +129,7 @@ get_header();
<h5 class="card-title"><?php echo number_format($product->get_attribute( 'so-luong-hoa-don' ),0,",","."); ?></h5>
<p class="card-text">Giá tiền</p>
<p class="card-money"><?php echo $product->get_price_html()?></p>
<a href="<?php echo wc_get_cart_url() . do_shortcode('[add_to_cart_url id="'.$product->ID.'"]');?>" class="btn btn-primary">Mua ngay</a>
<a href="<?php echo wc_get_checkout_url() . do_shortcode('[add_to_cart_url id="'.$product->ID.'"]');?>" class="btn btn-primary">Mua ngay</a>
<?php //echo do_shortcode('[add_to_cart id="'.$product->ID.'" style="border-right:1px solid #ccc"]')?>
</article>
</div>
......
......@@ -14,6 +14,7 @@ get_header();
<section id="prices">
<div class="container">
<!-- BẢNG GIÁ GÓI HÓA ĐƠN ĐIỆN TỬ -->
<h2 class="prices-title">BẢNG GIÁ GÓI HÓA ĐƠN ĐIỆN TỬ- A HÓA ĐƠN</h2>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
......@@ -90,12 +91,12 @@ get_header();
<td rowspan="<?=$product_cat->count?>" class="text-right" style="display: table-cell;vertical-align: middle;"><?=number_format($fee_start, 0, ',', '.')?></td>
<td class="text-right"><?php echo number_format($product->price + $fee_start, 0, ',', '.')?></td>
<td class="text-center">
<a href="<?php echo wc_get_cart_url() . do_shortcode('[add_to_cart_url id="'.$product->ID.'"]')?>" class="btn btn-primary bg-light-green">Mua ngay</a>
<a href="<?php echo wc_get_checkout_url() . do_shortcode('[add_to_cart_url id="'.$product->ID.'"]')?>" class="btn btn-primary bg-light-green">Mua ngay</a>
</td></tr>
<?php continue; } ?>
<td class="text-right total-price"><?php echo number_format($product->price + $fee_start, 0, ',', '.')?></td>
<td class="text-center">
<a href="<?php echo wc_get_cart_url() . do_shortcode('[add_to_cart_url id="'.$product->ID.'"]')?>" class="btn btn-primary bg-light-green">Mua ngay</a>
<a href="<?php echo wc_get_checkout_url() . do_shortcode('[add_to_cart_url id="'.$product->ID.'"]')?>" class="btn btn-primary bg-light-green">Mua ngay</a>
</td>
</tr>
<?php
......@@ -113,6 +114,7 @@ get_header();
</div>
<?php //echo do_shortcode('[products limit="12" columns="3" ]') ?>
</div>
<div class="row text-center price_fee">
<div class="col-xs-12 col-sm-12 col-md-12">
<p class="txt-red"> PHÍ KHỞI TẠO: 500.000 VNĐ </p>
......@@ -122,6 +124,7 @@ get_header();
</div>
<hr>
<!-- BẢNG GIÁ GÓI CHỮ KÝ SỐ -->
<h2 class="prices-title">BẢNG GIÁ GÓI CHỮ KÝ SỐ</h2>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
......@@ -221,7 +224,7 @@ get_header();
<?php }?>
<td class="text-center">
<a href="<?php echo wc_get_cart_url() . do_shortcode('[add_to_cart_url id="'.$product->ID.'"]')?>" class="btn btn-primary bg-light-green" >Mua ngay</a>
<a href="<?php echo wc_get_checkout_url() . do_shortcode('[add_to_cart_url id="'.$product->ID.'"]')?>" class="btn btn-primary bg-light-green" >Mua ngay</a>
</td>
</tr>
<?php
......
......@@ -54,7 +54,6 @@ function checkRecaptcha()
}
//response messages
$not_human = "Human verification incorrect.";
$missing_content = "Xin vui lòng điền đầy đủ thông tin cần thiết.";
$taxcode_invalid = "Mã số thuế không hợp lệ.";
$email_invalid = "Email không hợp lệ.";
......
......@@ -29,21 +29,161 @@ if ( ! $checkout->is_registration_enabled() && $checkout->is_registration_requir
?>
<form class="woocommerce-cart-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
<?php do_action( 'woocommerce_before_cart_table' ); ?>
<table class="shop_table shop_table_responsive cart woocommerce-cart-form__contents" cellspacing="0">
<thead>
<tr>
<th class="product-thumbnail">&nbsp;</th>
<th class="product-name"><?php esc_html_e( 'Product', 'woocommerce' ); ?></th>
<th class="product-price"><?php esc_html_e( 'Price', 'woocommerce' ); ?></th>
<th class="product-quantity"><?php esc_html_e( 'Quantity', 'woocommerce' ); ?></th>
<th class="product-subtotal"><?php esc_html_e( 'Subtotal', 'woocommerce' ); ?></th>
<th class="product-remove">&nbsp;</th>
</tr>
</thead>
<tbody>
<?php do_action( 'woocommerce_before_cart_contents' ); ?>
<?php
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
$product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
?>
<tr class="woocommerce-cart-form__cart-item <?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
<td class="product-thumbnail">
<?php
$thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
if ( ! $product_permalink ) {
echo $thumbnail; // PHPCS: XSS ok.
} else {
printf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $thumbnail ); // PHPCS: XSS ok.
}
?>
</td>
<td class="product-name" data-title="<?php esc_attr_e( 'Product', 'woocommerce' ); ?>">
<?php
if ( ! $product_permalink ) {
echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ) . '&nbsp;' );
} else {
echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_name() ), $cart_item, $cart_item_key ) );
}
do_action( 'woocommerce_after_cart_item_name', $cart_item, $cart_item_key );
// Meta data.
echo wc_get_formatted_cart_item_data( $cart_item ); // PHPCS: XSS ok.
// Backorder notification.
if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="backorder_notification">' . esc_html__( 'Available on backorder', 'woocommerce' ) . '</p>', $product_id ) );
}
?>
</td>
<td class="product-price" data-title="<?php esc_attr_e( 'Price', 'woocommerce' ); ?>">
<?php
echo apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
?>
</td>
<td class="product-quantity" data-title="<?php esc_attr_e( 'Quantity', 'woocommerce' ); ?>">
<?php
if ( $_product->is_sold_individually() ) {
$product_quantity = sprintf( '1 <input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key );
} else {
$product_quantity = woocommerce_quantity_input(
array(
'input_name' => "cart[{$cart_item_key}][qty]",
'input_value' => $cart_item['quantity'],
'max_value' => $_product->get_max_purchase_quantity(),
'min_value' => '0',
'product_name' => $_product->get_name(),
),
$_product,
false
);
}
echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item ); // PHPCS: XSS ok.
?>
</td>
<td class="product-subtotal" data-title="<?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?>">
<?php
echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
?>
</td>
<td class="product-remove">
<?php
echo apply_filters( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'woocommerce_cart_item_remove_link',
sprintf(
'<a href="%s" class="remove" aria-label="%s" data-product_id="%s" data-product_sku="%s">&times;</a>',
esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
esc_html__( 'Remove this item', 'woocommerce' ),
esc_attr( $product_id ),
esc_attr( $_product->get_sku() )
),
$cart_item_key
);
?>
</td>
</tr>
<?php
}
}
?>
<?php do_action( 'woocommerce_cart_contents' ); ?>
<tr>
<td colspan="6" class="actions">
<!-- <?php //if ( wc_coupons_enabled() ) { ?>
<div class="coupon">
<label for="coupon_code"><?php //esc_html_e( 'Coupon:', 'woocommerce' ); ?></label> <input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php //esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" /> <button type="submit" class="button" name="apply_coupon" value="<?php //esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>"><?php //esc_attr_e( 'Apply coupon', 'woocommerce' ); ?></button>
<?php //do_action( 'woocommerce_cart_coupon' ); ?>
</div>
<?php //} ?> -->
<button type="submit" class="button" name="update_cart" value="<?php esc_attr_e( 'Update cart', 'woocommerce' ); ?>"><?php esc_html_e( 'Update cart', 'woocommerce' ); ?></button>
<?php do_action( 'woocommerce_cart_actions' ); ?>
<?php wp_nonce_field( 'woocommerce-cart', 'woocommerce-cart-nonce' ); ?>
</td>
</tr>
<?php do_action( 'woocommerce_after_cart_contents' ); ?>
</tbody>
</table>
<?php do_action( 'woocommerce_after_cart_table' ); ?>
</form>
<form name="checkout" method="post" class="checkout woocommerce-checkout" action="<?php echo esc_url( wc_get_checkout_url() ); ?>" enctype="multipart/form-data">
<?php if ( $checkout->get_checkout_fields() ) : ?>
<?php do_action( 'woocommerce_checkout_before_customer_details' ); ?>
<div class="row" id="customer_details">
<div class="col-8">
<div class="col-lg-8 col-md-8 col-sm-12 col-xs-12">
<div class="loading" style="display:none;"><img src="<?php echo get_template_directory_uri()?>/images/rolling-1s-200px.gif" alt=""></div>
<div class="notify-mst txt-red" style="display:none;"></div>
<?php do_action( 'woocommerce_checkout_billing' ); ?>
<?php do_action( 'woocommerce_checkout_shipping' ); ?>
</div>
<div class="col-4">
<div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
<?php do_action( 'woocommerce_checkout_before_order_review_heading' ); ?>
<h3 id="order_review_heading"><?php esc_html_e( 'Your order', 'woocommerce' ); ?></h3>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment