functions.php 18.6 KB
Newer Older
imac's avatar
imac committed
1
<?php
Nahla Shiri's avatar
Nahla Shiri committed
2 3 4 5

@ini_set('upload_max_size', '64M');
@ini_set('post_max_size', '64M');
@ini_set('max_execution_time', '300');
imac's avatar
imac committed
6 7

//Get Zones 
Nahla Shiri's avatar
Nahla Shiri committed
8
function get_zones($post_ID = 157) {
imac's avatar
imac committed
9 10 11 12 13 14
    if (get_field('zones_commerciaux', $post_ID)):
        $i = 0;
        while (has_sub_field('zones_commerciaux', $post_ID)) :
            if (get_sub_field('list_zones', $post_ID)):
                $list_zone = array();
                while (has_sub_field('list_zones', $post_ID)) :
Nahla Shiri's avatar
Nahla Shiri committed
15
                    $list_zone[] = get_sub_field('num_zone');
imac's avatar
imac committed
16
                endwhile;
Nahla Shiri's avatar
Nahla Shiri committed
17 18
            endif;
            $allZones['zone' . $i] = $list_zone;
imac's avatar
imac committed
19
            $i++;
Nahla Shiri's avatar
Nahla Shiri committed
20
        endwhile;
imac's avatar
imac committed
21 22 23
    endif;
    return json_encode($allZones);
}
Nahla Shiri's avatar
Nahla Shiri committed
24

25 26 27 28 29 30 31
function nap_enqueue_scripts() {
	// Enqueue jQuery UI and autocomplete
	wp_enqueue_script( 'jquery-ui-core' );
    wp_enqueue_script( 'jquery-ui-autocomplete' );
}
add_action( 'wp_enqueue_scripts', 'nap_enqueue_scripts' );

imac's avatar
imac committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
//Dequeue CSS
function nap_dequeue_unnecessary_css() {
    wp_dequeue_style('additional-parent-style');
    wp_deregister_style('additional-parent-style');
    wp_dequeue_style('twentyseventeen-fonts');
    wp_dequeue_style('nf-display-style');
}

add_action('wp_enqueue_scripts', 'nap_dequeue_unnecessary_css', 100);

//Dequeue JavaScripts
function nap_dequeue_unnecessary_scripts() {
    wp_dequeue_script('twentyseventeen-global');
    wp_deregister_script('twentyseventeen-global');
    wp_dequeue_script('jquery-scrollto');
    wp_deregister_script('jquery-scrollto');
    wp_dequeue_script('twentyseventeen-skip-link-focus-fix');
    wp_deregister_script('twentyseventeen-skip-link-focus-fix');
    wp_dequeue_script('twentyseventeen-navigation');
    wp_deregister_script('twentyseventeen-navigation');

    //MS : 2017-07-17
Nahla Shiri's avatar
Nahla Shiri committed
54
    wp_register_script('getZones', home_url('wp-content/themes/nap/assets') . '/js/map.js');
imac's avatar
imac committed
55 56
    $listZones = array('listZones' => get_zones(157));

Nahla Shiri's avatar
Nahla Shiri committed
57
    wp_localize_script('getZones', 'zonesL', $listZones);
imac's avatar
imac committed
58
    //  wp_localize_script( 'listZones', 'object_name', $listZones );
Nahla Shiri's avatar
Nahla Shiri committed
59
    wp_enqueue_script('getZones');
imac's avatar
imac committed
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
    //END MS : 2017-07-17
}

add_action('wp_print_scripts', 'nap_dequeue_unnecessary_scripts');

//Display SVG
function nap_wpc_mime_types($mimes) {
    $mimes['svg'] = 'image/svg+xml';
    return $mimes;
}

add_filter('upload_mimes', 'nap_wpc_mime_types');

add_filter('redirect_canonical', 'nap_custom_disable_redirect_canonical');

function nap_custom_disable_redirect_canonical($redirect_url) {
    if (is_paged() && is_singular())
        $redirect_url = false;
    return $redirect_url;
}

function nap_change_wp_search_size($query) {
    if ($query->is_search)
        $query->query_vars['posts_per_page'] = 200;

    return $query;
}

add_filter('pre_get_posts', 'nap_change_wp_search_size');

//Custom logo 
function nap_custom_loginlogo() {
    echo '<style type="text/css">
    h1 a {background-image: url(' . home_url('wp-content/themes/nap/assets/images/logo.svg') . ') !important;width:102px !important;background-size:100px !important;height:52px !important;background: #05162b;
    opacity: 0.9; }
    </style>';
}

add_action('login_head', 'nap_custom_loginlogo');

// Move Yoast to bottom
function nap_yoasttobottom() {
    return 'low';
}

add_filter('wpseo_metabox_prio', 'nap_yoasttobottom');

add_filter('admin_footer_text', '__return_empty_string', 11);
add_filter('update_footer', '__return_empty_string', 11);

//===============================================================================


function nap_get_content($postID) {
    $content_post = get_post($postID);
    $content = $content_post->post_content;
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]&gt;', $content);
    return $content;
}

add_action('init', 'nap_create_post_type');

function nap_create_post_type() {
    register_post_type('fiche_technique', array(
        'labels' => array(
            'name' => __('Fiches Techniques'),
            'singular_name' => __('Fiche Technique')
Nahla Shiri's avatar
Nahla Shiri committed
128
        ),
imac's avatar
imac committed
129
        'public' => true
Nahla Shiri's avatar
Nahla Shiri committed
130
            )
imac's avatar
imac committed
131 132 133 134 135 136
    );
}

function nap_post_type_listing($post_type) {
    $select = array();
    $posts = get_posts(
Nahla Shiri's avatar
Nahla Shiri committed
137 138 139
            array(
                'post_type' => $post_type,
                'numberposts' => -1
imac's avatar
imac committed
140
            )
Nahla Shiri's avatar
Nahla Shiri committed
141
    );
imac's avatar
imac committed
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
    if (!$posts)
        return;


    foreach ($posts as $p) {

        $select[$p->ID] = $p->post_title;
    }

    return $select;
}

add_action('woocommerce_product_after_variable_attributes', 'nap_variation_settings_fields', 10, 3);

function nap_variation_settings_fields($loop, $variation_data, $variation) {

158
   
imac's avatar
imac committed
159 160 161

    // Gencode
    woocommerce_wp_text_input(
Nahla Shiri's avatar
Nahla Shiri committed
162 163 164
            array(
                'id' => 'var_gencod_' . $variation->ID,
                'label' => __('Gencod(EAN13)', 'woocommerce'),
imac's avatar
imac committed
165 166 167 168 169
                'value' => get_post_meta($variation->ID, '_var_gencod', true),
                'custom_attributes' => array(
                    'step' => 'any',
                    'min' => '0'
                )
Nahla Shiri's avatar
Nahla Shiri committed
170 171
            )
    );
imac's avatar
imac committed
172 173 174

    // ITF 14
    woocommerce_wp_text_input(
Nahla Shiri's avatar
Nahla Shiri committed
175 176 177
            array(
                'id' => 'var_itf14_' . $variation->ID,
                'label' => __('ITF 14', 'woocommerce'),
imac's avatar
imac committed
178 179 180 181 182
                'value' => get_post_meta($variation->ID, '_var_itf14', true),
                'custom_attributes' => array(
                    'step' => 'any',
                    'min' => '0'
                )
Nahla Shiri's avatar
Nahla Shiri committed
183 184
            )
    );
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
    
     $option = nap_post_type_listing('fiche_technique'); 
    woocommerce_wp_text_input( 
    array( 
      'id' => 'fiche_var_auto_'. $variation->ID,
      'name'=>'fiche_var_auto_'. $variation->ID,
      'value' => get_post_meta($variation->ID, 'fiche_var_auto', true),
      'label' => __( 'Fiche technique', 'woocommerce' ), 
      
    )
  );?>
    <script type="text/javascript">
		jQuery(document).ready(function(){
                   
			var posts = <?php echo json_encode(  $option  ); ?>;
                        var data = [];
                     jQuery.each(posts, function( index, value ) {
                           
                            data.push({'label':value, 'value':index});
                          });
                         jQuery('input[name="fiche_var_auto_<?php echo $variation->ID?>"]').click(function() {
                           jQuery(this).val('');
                        });
			jQuery( 'input[name="fiche_var_auto_<?php echo $variation->ID?>"]' ).autocomplete({
                            
		        source: data,
		        minLength: 1,
		        select: function(event, ui) {
                            event.preventDefault();
		            jQuery(this).val(ui.item.label);
                            jQuery("#_var_fiche_<?php echo $variation->ID?>").val(ui.item.value);
		        }
		    });
		});    
	</script>
    <?php
  
    woocommerce_wp_hidden_input( 
        array( 
          'id' => '_var_fiche_'. $variation->ID,
          'label' => __( 'Fiche technique', 'woocommerce' ), 
          'value' => get_post_meta($variation->ID, '_var_fiche', true),
          'name'=>'_var_fiche_'. $variation->ID,

        )
  );

imac's avatar
imac committed
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251

}

// Save Variation Settings
add_action('woocommerce_save_product_variation', 'nap_save_variation_settings_fields', 10, 2);

function nap_save_variation_settings_fields($variation_id) {

    // Gencode
    $var_gencod = $_POST['var_gencod_' . $variation_id];
    if (!empty($var_gencod)) {
        update_post_meta($variation_id, '_var_gencod', esc_attr($var_gencod));
    }
    // ITF 14
    $var_itf14 = $_POST['var_itf14_' . $variation_id];
    if (!empty($var_itf14)) {
        update_post_meta($variation_id, '_var_itf14', esc_attr($var_itf14));
    }

    // Select fiches techniques
252
    $var_fiche = $_POST['_var_fiche_'. $variation_id];
imac's avatar
imac committed
253 254 255
    if (!empty($var_fiche)) {
        update_post_meta($variation_id, '_var_fiche', esc_attr($var_fiche));
    }
256 257 258 259 260 261 262 263
    
    
    $select_fiche = $_POST['fiche_var_auto_'.$variation_id];
  if( ! empty( $select_fiche ) ) {
     update_post_meta( $variation_id, 'fiche_var_auto', esc_attr( $select_fiche ) );
  }
  

imac's avatar
imac committed
264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
}

function nap_load_variation_settings_fields($variations_id) {

    // duplicate the line for each field
    $variations['var_code'] = get_post_meta($variations_id, '_var_code', true);
    $variations['var_gencod'] = get_post_meta($variations_id, '_var_gencod', true);
    $variations['var_itf14'] = get_post_meta($variations_id, '_var_itf14', true);
    $variations['var_fiche'] = get_post_meta($variations_id, '_var_fiche', true);

    return $variations;
}

function nap_category_image($catID) {
    $thumbnail_id = get_woocommerce_term_meta($catID, 'thumbnail_id', true);
Nahla Shiri's avatar
Nahla Shiri committed
279
    $image = wp_get_attachment_image_src($thumbnail_id, 'large');
imac's avatar
imac committed
280 281 282 283
    return $image[0];
}

function nap_attachment_image($pageID) {
284
    $thumb = wp_get_attachment_image_src(get_post_thumbnail_id($pageID), 'large');
imac's avatar
imac committed
285 286 287 288
    $url = $thumb['0'];
    return $url;
}

Nahla Shiri's avatar
Nahla Shiri committed
289
function nap_menu() {
imac's avatar
imac committed
290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307

    $menu = "";
    $taxonomy = 'product_cat';
    $orderby = 'id';
    $show_count = 0;
    $pad_counts = 0;
    $hierarchical = 1;
    $title = '';
    $empty = 0;

    $args = array(
        'taxonomy' => $taxonomy,
        'orderby' => $orderby,
        'show_count' => $show_count,
        'pad_counts' => $pad_counts,
        'hierarchical' => $hierarchical,
        'title_li' => $title,
        'hide_empty' => $empty
Nahla Shiri's avatar
Nahla Shiri committed
308
    );
imac's avatar
imac committed
309 310 311 312
    $all_categories = get_categories($args);
    foreach ($all_categories as $cat) {
        if ($cat->category_parent == 0) {
            $category_id = $cat->term_id;
Nahla Shiri's avatar
Nahla Shiri committed
313
            $menu.= '<li data-page = "' . $category_id . '" data-img = "' . nap_category_image($category_id) . '"><a href="' . get_term_link($cat->slug, 'product_cat') . '">' . $cat->name . '</a>';
imac's avatar
imac committed
314 315 316 317 318 319 320 321 322 323 324

            $args2 = array(
                'taxonomy' => $taxonomy,
                'child_of' => 0,
                'parent' => $category_id,
                'orderby' => $orderby,
                'show_count' => $show_count,
                'pad_counts' => $pad_counts,
                'hierarchical' => $hierarchical,
                'title_li' => $title,
                'hide_empty' => 1
Nahla Shiri's avatar
Nahla Shiri committed
325
            );
imac's avatar
imac committed
326
            $sub_cats = get_categories($args2);
Nahla Shiri's avatar
Nahla Shiri committed
327
            $menu.= ' <ul class = "subcat" data-page = "' . $category_id . '">';
imac's avatar
imac committed
328 329 330
            if ($sub_cats) {
                $class = '';
                foreach ($sub_cats as $key => $sub_category) {
331
                   
imac's avatar
imac committed
332 333 334 335
                    if ($key == 0)
                        $calss = 'active';
                    else
                        $calss = '';
336
                    $menu.= '<li data-cover = "' . nap_category_image($sub_category->term_id) . '"><a class="' . $calss . '" href="#cat' . $sub_category->term_id . '">' .  $sub_category->name . '</a></li>';
imac's avatar
imac committed
337 338 339 340 341 342 343 344 345 346 347 348 349 350 351
                }
            }

            $menu.= '</ul></li>';
        }
    }

    return $menu;
}

function nap_variation_url($variationID) {

    $variable_product = wc_get_product($variationID);

    $couleur = $variable_product->get_attribute('couleur');
Nahla Shiri's avatar
Nahla Shiri committed
352 353 354 355
   $color_url = get_term_by('slug', $couleur, 'pa_couleur');
   $format = $variable_product->get_attribute('format');
    $format_url = get_term_by('slug', $format, 'pa_format');
    $url = '?attribute_couleur=' . $color_url->slug . '&attribute_format=' . $format_url->slug . '&variation_id=' . $variationID;
Nahla Shiri's avatar
Nahla Shiri committed
356 357 358 359 360 361 362 363 364 365 366 367 368
    return preg_replace('/\s+/', '', $url);
}

function nap_variation_color($variationID) {
    $variable_product = wc_get_product($variationID);

    $term = get_term_by('name', $variable_product->get_attribute('couleur'), 'pa_couleur');
    $termID = $term->term_id;
    $color = get_field('couleurs', 'pa_couleur_' . $termID);

    return $color;
}

Nahla Shiri's avatar
Nahla Shiri committed
369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390

function nap_color_attribute($name){
    $term = get_term_by('slug',$name, 'pa_couleur');
    $termID = $term->term_id;
    $color = get_field('couleurs', 'pa_couleur_' . $termID);

    return $color;
}

function nap_icon_format($name){
   $icons = array(); 
    $term = get_term_by('slug',$name, 'pa_format');
    $termID = $term->term_id;
   $active = get_field('format_icone_active', 'pa_format_' . $termID);
   $inactive = get_field('format_icone_inactive', 'pa_format_' . $termID);
   $icons['active']=$active;
   $icons['inactive']=$inactive;
   return $icons;
   
   
}

Nahla Shiri's avatar
Nahla Shiri committed
391 392 393 394 395 396 397 398 399 400
function nap_distinct_color_variations($variations) {
    $var_colors = array();
    foreach ($variations as $variation) :
        $variation_ID = $variation['variation_id'];
        $color = nap_variation_color($variation_ID);
        if (!in_array($color, $var_colors)):
            $var_colors[$variation_ID] = $color;
        endif;
    endforeach;
    return $var_colors;
imac's avatar
imac committed
401 402
}

Nahla Shiri's avatar
Nahla Shiri committed
403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425

function nap_variation_format($variationID) {
    $variable_product = wc_get_product($variationID);
    return $variable_product->get_attribute('format');

}

function nap_distinct_format_variations($variations) {
    $var_format = array();
    foreach ($variations as $variation) :
        $variation_ID = $variation['variation_id'];
        $format_name = nap_variation_format($variation_ID);
        $term = get_term_by('name', $format_name, 'pa_format');
        $termID = $term->term_id;
        if (!in_array($termID, $var_format)):
            $var_format[$termID] = $format_name;
        endif;
    endforeach;
   // print_r($var_format);
    return $var_format;
}


426 427 428 429 430 431 432
function nap_image_resize($image,$size){
        $ext = substr($image, strrpos($image, "."));
        $url = substr($image, 0, strrpos($image, "."));
        return $newimage = $url . "-".$size."x".$size. $ext;
}


Nahla Shiri's avatar
Nahla Shiri committed
433

imac's avatar
imac committed
434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449
function nap_get_item($post_ID, $args = null, $current_page = '', $options = null) {
    $link = $image = $size = '';
    if (isset($options)) {
        if ($options['dwnldLink']) {
            $link = ' <a class = "circle-btn download-btn hidden-elem" download href="' . $options['dwnldLink'] . '"></a>';
        }

        if ($options['image']) {
            $image = $options['image'];
        }

        if ($options['size']) {
            $size = $options['size'];
        }
    }

450
   
imac's avatar
imac committed
451 452 453 454 455 456 457 458
    $nap_article = '<article class = " visible row">
    <a href="#"></a>
    <figure data-bg = "" class = "' . $size . ' transition">    
    <div class="abs-full article-bg transition"></div>';
    $nap_article.= $link;
    $nap_article.='<img class="transition" src="' . $image . '" alt="" title="">';
    if ($current_page == 'catalogue') :
        $nap_article .= '<ul class = "clearfix">';
Nahla Shiri's avatar
Nahla Shiri committed
459 460
        $variations = get_posts($args);
        $temp_colors = array();
461 462 463 464 465 466 467 468 469
        if(!empty($variations)){
            foreach ($variations as $key => $value) {
                $color = nap_variation_color($value->ID);
                $format = nap_variation_format($value->ID);
                if (!in_array($color, $temp_colors)) {
                    $temp_colors[] = $color;

                    $nap_article.='<li data-link = "' . get_permalink($post_ID) . nap_variation_url($value->ID) . '" data-image = "' . nap_image_resize(get_the_post_thumbnail_url($value->ID),'200') . '" data-color = "' . $color . '" data-format = "' . $format . '"></li> ';
                }
Nahla Shiri's avatar
Nahla Shiri committed
470
            }
imac's avatar
imac committed
471
        }
472 473 474 475
        else
        {
           $nap_article.='<li data-link = "' . get_permalink($post_ID). '" data-image = "' . nap_image_resize(get_the_post_thumbnail_url($value->ID),'200') . '"></li> '; 
        }
Nahla Shiri's avatar
Nahla Shiri committed
476
        $nap_article.='</ul>';
imac's avatar
imac committed
477 478 479 480 481 482 483
    endif;
    $nap_article.='</figure>
    <h3 class = "font-small" >' . get_the_title($post_ID) . '</h3>
    </article>';

    return $nap_article;
}
Nahla Shiri's avatar
Nahla Shiri committed
484 485

remove_action('woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);
Nahla Shiri's avatar
Nahla Shiri committed
486 487 488 489 490 491


function nap_upload_image($img){
    return trim(strtolower($img));
} 

Nahla Shiri's avatar
Nahla Shiri committed
492 493 494
function nap_variable_meta($varID, $meta){
    return  get_post_meta( $varID, '_'.$meta, true );
}
imac's avatar
imac committed
495 496 497 498 499 500 501 502 503 504
add_action( 'wp_login_failed', 'my_front_end_login_fail' );  // hook failed login

function my_front_end_login_fail( $username ) {
   $referrer = $_SERVER['HTTP_REFERER'];  // where did the post submission come from?
   // if there's a valid referrer, and it's not the default log-in screen
   if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
      wp_redirect( $referrer . '?login=failed' );  // let's append some information (login=failed) to the URL for the theme to use
      exit;
   }
}
Nahla Shiri's avatar
Nahla Shiri committed
505
        
506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601
       


add_action( 'woocommerce_product_options_general_product_data', 'nap_general_product_data_custom_field' );

function nap_general_product_data_custom_field($post_id) {
    
    woocommerce_wp_text_input( 
    array( 
      'id' => '_gencod_simple', 
      'label' => __( 'Gencod(EAN13)', 'woocommerce' ), 
      
    )
  );
    
    
    woocommerce_wp_text_input( 
    array( 
      'id' => '_itf14_simple', 
      'label' => __( 'ITF 14', 'woocommerce' ), 
      
    )
  );
    
    $option = nap_post_type_listing('fiche_technique'); 
    woocommerce_wp_text_input( 
    array( 
      'id' => 'fiche_simple_auto', 
      'name'=>'fiche_simple_auto',
      'label' => __( 'Fiche technique', 'woocommerce' ), 
      
    )
  );?>
    <script type="text/javascript">
		jQuery(document).ready(function(){
                   
			var posts = <?php echo json_encode(  $option  ); ?>;
                        var data = [];
                     jQuery.each(posts, function( index, value ) {
                           
                            data.push({'label':value, 'value':index});
                          });
                         jQuery('input[name="fiche_simple_auto"]').click(function() {
                           jQuery(this).val('');
                        });
			jQuery( 'input[name="fiche_simple_auto"]' ).autocomplete({
                            
		        source: data,
		        minLength: 1,
		        select: function(event, ui) {
                            event.preventDefault();
		            jQuery(this).val(ui.item.label);
                            jQuery("#_fiche_simple").val(ui.item.value);
		        }
		    });
		});    
	</script>
    <?php
  
    woocommerce_wp_hidden_input( 
        array( 
          'id' => '_fiche_simple', 
          'label' => __( 'Fiche technique', 'woocommerce' ), 
           'name'=>'_fiche_simple',

        )
  );

  
}

add_action( 'woocommerce_process_product_meta', 'nap_save_general_proddata_custom_field' );
function nap_save_general_proddata_custom_field( $post_id ) {
  
  $select_fiche = $_POST['fiche_simple_auto'];
  if( ! empty( $select_fiche ) ) {
     update_post_meta( $post_id, 'fiche_simple_auto', esc_attr( $select_fiche ) );
  }
  
  $id_fiche = $_POST['_fiche_simple'];
  if( ! empty( $id_fiche ) ) {
     update_post_meta( $post_id, '_fiche_simple', esc_attr( $id_fiche ) );
  }
  
  $text_gencod = $_POST['_gencod_simple'];
  if( ! empty( $text_gencod ) ) {
     update_post_meta( $post_id, '_gencod_simple', esc_attr( $text_gencod ) );
  }
  
  $text_itf14 = $_POST['_itf14_simple'];
  if( ! empty( $text_itf14 ) ) {
     update_post_meta( $post_id, '_itf14_simple', esc_attr( $text_itf14 ) );
  }
  
  
}